Documentation
¶
Overview ¶
Package plugin provides plugin register interfaces for building http handler plugins.
Usage example:
package main
import (
"context"
"errors"
"fmt"
"html"
"net/http"
)
// HandlerRegisterer is the symbol the plugin loader will try to load. It must implement the Registerer interface
var HandlerRegisterer = registerer("lura-example")
type registerer string
func (r registerer) RegisterHandlers(f func(
name string,
handler func(context.Context, map[string]interface{}, http.Handler) (http.Handler, error),
)) {
f(string(r), r.registerHandlers)
}
func (r registerer) registerHandlers(ctx context.Context, extra map[string]interface{}, _ http.Handler) (http.Handler, error) {
// check the passed configuration and initialize the plugin
name, ok := extra["name"].(string)
if !ok {
return nil, errors.New("wrong config")
}
if name != string(r) {
return nil, fmt.Errorf("unknown register %s", name)
}
// return the actual handler wrapping or your custom logic so it can be used as a replacement for the default http handler
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(req.URL.Path))
}), nil
}
func init() {
fmt.Println("lura-example handler plugin loaded!!!")
}
func main() {}
Index ¶
- Constants
- func Load(path, pattern string, rcf RegisterHandlerFunc) (int, error)
- func LoadWithLogger(path, pattern string, rcf RegisterHandlerFunc, logger logging.Logger) (int, error)
- func RegisterHandler(name string, ...)
- type LoggerRegisterer
- type Plugin
- type RegisterHandlerFunc
- type Registerer
- type RunServer
Constants ¶
View Source
const Namespace = "github_com/devopsfaith/krakend/transport/http/server/handler"
Variables ¶
This section is empty.
Functions ¶
func LoadWithLogger ¶
Types ¶
type LoggerRegisterer ¶
type LoggerRegisterer interface {
RegisterLogger(interface{})
}
type RegisterHandlerFunc ¶
type Registerer ¶
Click to show internal directories.
Click to hide internal directories.