项目文件夹

文件
2026-07-13 12:32:21 +08:00

80 行
1.7 KiB
Go

/*
A "hello world" plugin in Go,
which reads a request header and sets a response header.
*/
package main
import (
"fmt"
"github.com/Kong/go-pdk"
"github.com/Kong/go-pdk/server"
)
type Config struct {
Message string
}
func New() interface{} {
return &Config{}
}
func main() {
server.StartServer(New, "0.1", 1)
}
func (conf Config) Access(kong *pdk.PDK) {
host, err := kong.Request.GetHeader("host")
if err != nil {
kong.Log.Err(err.Error())
}
message := conf.Message
if message == "" {
message = "hello"
}
kong.Response.SetHeader("x-hello-from-go", fmt.Sprintf("Go says %s to %s", message, host))
kong.Ctx.SetShared("shared_msg", message)
}
func (conf Config) Log(kong *pdk.PDK) {
access_start, err := kong.Nginx.GetCtxFloat("KONG_ACCESS_START")
if err != nil {
kong.Log.Err(err.Error())
}
kong.Log.Debug("access_start: ", access_start)
header_value, err := kong.Request.GetHeader("X-Loose-Data")
if err != nil {
kong.Log.Err(err.Error())
}
kong.Log.Debug("request_header: ", header_value)
header_value, err = kong.Response.GetHeader("X-Powered-By")
if err != nil {
kong.Log.Err(err.Error())
}
kong.Log.Debug("response_header: ", header_value)
shared_msg, err := kong.Ctx.GetSharedString("shared_msg")
if err != nil {
kong.Log.Err(err.Error())
}
kong.Log.Debug("shared_msg: ", shared_msg)
serialized, err := kong.Log.Serialize()
if err != nil {
kong.Log.Err(err.Error())
}
kong.Log.Debug("serialized:", serialized)
}
func (conf Config) Response(kong *pdk.PDK) {
srvr, err := kong.ServiceResponse.GetHeader("Server")
if err != nil {
kong.Log.Err(err.Error())
}
kong.Response.SetHeader("x-hello-from-go-at-response", fmt.Sprintf("got from server '%s'", srvr))
}