Go - Kit 筆記 - 01 - Endpoint
阿新 • • 發佈:2019-01-04
Endpoint – 端點
位於github.com/go-kit/kit/endpoint/
包,裡面有一個endpoint.go
檔案,定義了Endpoint的相關介面。
//端點 -- go-kit的基本模組,實則是一個(函式型別)。 //定義好函式後,把函式註冊到http或grpc上,就可以實現業務函式的回撥。 type Endpoint func(ctx context.Context, request interface{}) (response interface{}, err error) //空端點 -- 一個端點的例項,不做任何事情。測試用的。 func Nop(context.Context, interface{}) (interface{}, error) { return struct{}{}, nil } //中介軟體 -- 其實就是裝飾器、裝飾者模式,用於裝飾端點。 //go-kit所有對端點的操作都是由裝飾器來完成的。 type Middleware func(Endpoint) Endpoint //鏈 -- 中介軟體的輔助功能,按照傳參順序組合中介軟體。 //第一個中介軟體為最外層,最後一個為最內層 func Chain(outer Middleware, others ...Middleware) Middleware { return func(next Endpoint) Endpoint { for i := len(others) - 1; i >= 0; i-- { // reverse next = others[i](next) } return outer(next) } } //故障器 -- 沒用過額。。 type Failer interface { Failed() error }