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.