@ -7,6 +7,7 @@ import (
"sort"
"strings"
"text/template"
"time"
"github.com/zeromicro/go-zero/core/collection"
"github.com/zeromicro/go-zero/tools/goctl/api/spec"
@ -34,7 +35,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
`
routesAdditionTemplate = `
server . AddRoutes (
{ { . routes } } { { . jwt } } { { . signature } } { { . prefix } }
{ { . routes } } { { . jwt } } { { . signature } } { { . prefix } } { { . timeout } }
)
`
)
@ -57,6 +58,8 @@ type (
jwtEnabled bool
signatureEnabled bool
authName string
timeout string
timeoutEnable bool
middlewares [ ] string
prefix string
jwtTrans string
@ -110,6 +113,15 @@ func genRoutes(dir, rootPkg string, cfg *config.Config, api *spec.ApiSpec) error
rest . WithPrefix ( "%s" ) , ` , g . prefix )
}
var timeout string
if g . timeoutEnable {
duration , err := time . ParseDuration ( g . timeout )
if err != nil {
panic ( err )
}
timeout = fmt . Sprintf ( "rest.WithTimeout(%d)," , duration )
}
var routes string
if len ( g . middlewares ) > 0 {
gbuilder . WriteString ( "\n}...," )
@ -130,6 +142,7 @@ rest.WithPrefix("%s"),`, g.prefix)
"jwt" : jwt ,
"signature" : signature ,
"prefix" : prefix ,
"timeout" : timeout ,
} ) ; err != nil {
return err
}
@ -205,6 +218,13 @@ func getRoutes(api *spec.ApiSpec) ([]group, error) {
} )
}
timeout := g . GetAnnotation ( "timeout" )
if len ( timeout ) > 0 {
groupedRoutes . timeoutEnable = true
groupedRoutes . timeout = timeout
}
jwt := g . GetAnnotation ( "jwt" )
if len ( jwt ) > 0 {
groupedRoutes . authName = jwt