package endpoint
import "github.com/go-kit/kit/endpoint"
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 ¶
Functions ¶
func Nop ¶
Nop is an endpoint that does nothing and returns a nil error. Useful for tests.
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.
Code:play
Output: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
}
first pre
second pre
third pre
my endpoint!
third post
second post
first post
Source Files ¶
- Version
- v0.5.0
- Published
- Jun 8, 2017
- Platform
- js/wasm
- Imports
- 1 packages
- Last checked
- 4 days ago –
Tools for package owners.