This commit is contained in:
MaxToby 2021-01-20 22:38:54 +08:00
parent 3ccab1b039
commit 2ce3fc9b26
2 changed files with 52 additions and 73 deletions

View File

@ -6,21 +6,21 @@ info(
version: "type version here" version: "type version here"
) )
type ( type (
RegisterReq { RegisterReq {
Username string `json:"username"` Username string `json:"username"`
Password string `json:"password"` Password string `json:"password"`
Mobile string `json:"mobile"` Mobile string `json:"mobile"`
} }
// 登录请求
LoginReq { LoginReq {
Username string `json:"username" desc:"用户名"` Username string `json:"username"`
Password string `json:"password"` //密码 Password string `json:"password"`
} // 登录请求 }
UserInfoReq { UserInfoReq {
Id string `path:"id"` // 会员ID Id string `path:"id"`
Page string `form:"page,default=1"` //分页
} }
UserInfoReply { UserInfoReply {
@ -34,17 +34,11 @@ type (
UserSearchReq { UserSearchReq {
KeyWord string `form:"keyWord"` KeyWord string `form:"keyWord"`
} }
UserSearchReply {
KeyWord []*UserInfoReply
KeyWords []*UserSearchReq
}
) )
service user-api { service user-api {
@doc( @doc(
summary: "注册" summary: "注册"
description: "注册一个用户"
) )
@handler register @handler register
post /api/user/register (RegisterReq) post /api/user/register (RegisterReq)
@ -65,15 +59,5 @@ service user-api {
summary: "用户搜索" summary: "用户搜索"
) )
@handler searchUser @handler searchUser
get /api/user/search (UserSearchReq) returns (UserSearchReply) get /api/user/search (UserSearchReq) returns (UserInfoReply)
}
@server(
jwt: Auth
group: greet
middleware: LogHandler
)
service user-api {
@handler ping
get /user/ping
} }

View File

@ -85,58 +85,57 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
} }
} }
} }
defineStruct, _ := route.RequestType.(spec.DefineStruct) if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok {
if strings.ToUpper(route.Method) == http.MethodGet {
if strings.ToUpper(route.Method) == http.MethodGet { for _, member := range defineStruct.Members {
if strings.Contains(member.Tag, "path") {
for _, member := range defineStruct.Members {
if strings.Contains(member.Tag, "path") {
continue
}
tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)]
ftype, format, ok := primitiveSchema(tempKind, member.Type.Name())
if !ok {
ftype = tempKind.String()
format = "UNKNOWN"
}
sp := swaggerParameterObject{In: "query", Type: ftype, Format: format}
for _, tag := range member.Tags() {
sp.Name = tag.Name
if len(tag.Options) == 0 {
sp.Required = true
continue continue
} }
for _, option := range tag.Options { tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)]
if strings.HasPrefix(option, defaultOption) { ftype, format, ok := primitiveSchema(tempKind, member.Type.Name())
segs := strings.Split(option, equalToken) if !ok {
if len(segs) == 2 { ftype = tempKind.String()
sp.Default = segs[1] format = "UNKNOWN"
} }
} else if !strings.HasPrefix(option, optionalOption) { sp := swaggerParameterObject{In: "query", Type: ftype, Format: format}
for _, tag := range member.Tags() {
sp.Name = tag.Name
if len(tag.Options) == 0 {
sp.Required = true sp.Required = true
continue
}
for _, option := range tag.Options {
if strings.HasPrefix(option, defaultOption) {
segs := strings.Split(option, equalToken)
if len(segs) == 2 {
sp.Default = segs[1]
}
} else if !strings.HasPrefix(option, optionalOption) {
sp.Required = true
}
} }
} }
parameters = append(parameters, sp)
} }
parameters = append(parameters, sp)
}
} else { } else {
reqRef := fmt.Sprintf("#/definitions/%s", route.RequestType.Name())
if len(route.RequestType.Name()) > 0 { reqRef := fmt.Sprintf("#/definitions/%s", route.RequestType.Name())
var schema = swaggerSchemaObject{
schemaCore: schemaCore{ if len(route.RequestType.Name()) > 0 {
Ref: reqRef, var schema = swaggerSchemaObject{
}, schemaCore: schemaCore{
Ref: reqRef,
},
}
parameters = append(parameters, swaggerParameterObject{
Name: "body",
In: "body",
Required: true,
Schema: &schema,
})
} }
parameters = append(parameters, swaggerParameterObject{
Name: "body",
In: "body",
Required: true,
Schema: &schema,
})
} }
} }
@ -146,18 +145,14 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
} }
desc := "A successful response." desc := "A successful response."
respRef := fmt.Sprintf("#/definitions/%s", route.ResponseType.Name()) respRef := ""
if route.ResponseType != nil && len(route.ResponseType.Name()) > 0 {
if len(route.ResponseType.Name()) < 1 { respRef = fmt.Sprintf("#/definitions/%s", route.ResponseType.Name())
respRef = ""
} }
tags := service.Name tags := service.Name
if value := group.GetAnnotation("group"); len(value) > 0 { if value := group.GetAnnotation("group"); len(value) > 0 {
tags = value tags = value
} }
operationObject := &swaggerOperationObject{ operationObject := &swaggerOperationObject{
Tags: []string{tags}, Tags: []string{tags},
Parameters: parameters, Parameters: parameters,