1. 程式人生 > >Go - Kit 筆記 - 01 - Endpoint

Go - Kit 筆記 - 01 - Endpoint

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
}