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

View File

@ -85,58 +85,57 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
}
}
}
defineStruct, _ := route.RequestType.(spec.DefineStruct)
if strings.ToUpper(route.Method) == http.MethodGet {
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
if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok {
if strings.ToUpper(route.Method) == http.MethodGet {
for _, member := range defineStruct.Members {
if strings.Contains(member.Tag, "path") {
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) {
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
}
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 {
reqRef := fmt.Sprintf("#/definitions/%s", route.RequestType.Name())
} else {
if len(route.RequestType.Name()) > 0 {
var schema = swaggerSchemaObject{
schemaCore: schemaCore{
Ref: reqRef,
},
reqRef := fmt.Sprintf("#/definitions/%s", route.RequestType.Name())
if len(route.RequestType.Name()) > 0 {
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."
respRef := fmt.Sprintf("#/definitions/%s", route.ResponseType.Name())
if len(route.ResponseType.Name()) < 1 {
respRef = ""
respRef := ""
if route.ResponseType != nil && len(route.ResponseType.Name()) > 0 {
respRef = fmt.Sprintf("#/definitions/%s", route.ResponseType.Name())
}
tags := service.Name
if value := group.GetAnnotation("group"); len(value) > 0 {
tags = value
}
operationObject := &swaggerOperationObject{
Tags: []string{tags},
Parameters: parameters,