package gin_ type ServiceBuilder struct { service interface{} endPoint Endpoint requestFunc EncodeRequestFunc responseFunc DecodeResponseFunc methods string middlewares []Middleware } func NewBuilder() *ServiceBuilder { return &ServiceBuilder{middlewares:make([]Middleware,0)} } func(this *ServiceBuilder) WithService(obj interface{}) *ServiceBuilder { this.service=obj return this } func(this *ServiceBuilder) WithMiddleware(obj Middleware) *ServiceBuilder { this.middlewares=append(this.middlewares,obj) return this } func(this *ServiceBuilder) WithEndpoint(obj Endpoint) *ServiceBuilder { this.endPoint=obj return this } func(this *ServiceBuilder) WithRequest(obj EncodeRequestFunc) *ServiceBuilder { this.requestFunc=obj return this } func(this *ServiceBuilder) WithResponse(obj DecodeResponseFunc) *ServiceBuilder { this.responseFunc=obj return this } func(this *ServiceBuilder) WithMethods(methods string) *ServiceBuilder { this.methods=methods return this } func(this *ServiceBuilder) Build(path string,methods string) *ServiceBuilder{ finalEndpoint:=this.endPoint for _,m:=range this.middlewares{ //遍历中间件 finalEndpoint=m(finalEndpoint) } handler:=RegisterHandler(finalEndpoint,this.requestFunc,this.responseFunc) SetHandler(methods,path,handler) return this }