package gateway import ( "fmt" "git.sxidc.com/go-framework/baize/framework/core/api" ) type Builder struct { router api.Router httpMethod string relativePath string } func (builder *Builder) Url(httpMethod string, relativePath string) *Builder { newBuilder := builder.copy() newBuilder.httpMethod = httpMethod newBuilder.relativePath = relativePath return newBuilder } func (builder *Builder) Request() *Builder { newBuilder := builder.copy() return newBuilder } func (builder *Builder) Response() *Builder { newBuilder := builder.copy() return newBuilder } func (builder *Builder) PassThrough() *Builder { newBuilder := builder.copy() return newBuilder } func (builder *Builder) Build(middlewares ...api.Handler) { newBuilder := builder.copy() newBuilder.router.AddRoute(builder.httpMethod, builder.relativePath, append(middlewares, func(c *api.Context) { fmt.Println("Come Here!!!") })...) } func (builder *Builder) copy() *Builder { newBuilder := &Builder{ router: builder.router, httpMethod: builder.httpMethod, relativePath: builder.relativePath, } return newBuilder }