Documentation ¶
Overview ¶
Package endpoint defines an abstraction for RPCs.
Endpoints are a fundamental building block for many Go kit components. Endpoints are implemented by servers, and called by clients.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Endpoint ¶
Endpoint is the fundamental building block of servers and clients. It represents a single RPC method.
type Middleware ¶
Middleware is a chainable behavior modifier for endpoints.
func Chain ¶
func Chain(outer Middleware, others ...Middleware) Middleware
Chain is a helper function for composing middlewares. Requests will traverse them in the order they're declared. That is, the first middleware is treated as the outermost middleware.
Example ¶
package main import ( "context" "fmt" "github.com/go-kit/kit/endpoint" ) func main() { e := endpoint.Chain( annotate("first"), annotate("second"), annotate("third"), )(myEndpoint) if _, err := e(ctx, req); err != nil { panic(err) } } var ( ctx = context.Background() req = struct{}{} ) func annotate(s string) endpoint.Middleware { return func(next endpoint.Endpoint) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { fmt.Println(s, "pre") defer fmt.Println(s, "post") return next(ctx, request) } } } func myEndpoint(context.Context, interface{}) (interface{}, error) { fmt.Println("my endpoint!") return struct{}{}, nil }
Output: first pre second pre third pre my endpoint! third post second post first post
Click to show internal directories.
Click to hide internal directories.