parent
bd6092ac10
commit
0aac4b39f3
@ -8,6 +8,8 @@ info(
|
|||||||
|
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
|
||||||
|
//注册请求结构
|
||||||
RegisterReq {
|
RegisterReq {
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
Password string `json:"password"`
|
Password string `json:"password"`
|
||||||
@ -35,28 +37,32 @@ type (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@server(
|
||||||
|
prefix: /api
|
||||||
|
)
|
||||||
|
|
||||||
service user-api {
|
service user-api {
|
||||||
@doc(
|
@doc(
|
||||||
summary: 注册
|
summary: 注册
|
||||||
)
|
)
|
||||||
@handler register
|
@handler register
|
||||||
post /api/user/register (RegisterReq)
|
post /user/register (RegisterReq)
|
||||||
|
|
||||||
@doc(
|
@doc(
|
||||||
summary: 登录
|
summary: 登录
|
||||||
)
|
)
|
||||||
@handler login
|
@handler login
|
||||||
post /api/user/login (LoginReq)
|
post /user/login (LoginReq)
|
||||||
|
|
||||||
@doc(
|
@doc(
|
||||||
summary: 获取用户信息
|
summary: 获取用户信息
|
||||||
)
|
)
|
||||||
@handler getUserInfo
|
@handler getUserInfo
|
||||||
get /api/user/:id (UserInfoReq) returns (UserInfoReply)
|
get /user/:id (UserInfoReq) returns (UserInfoReply)
|
||||||
|
|
||||||
@doc(
|
@doc(
|
||||||
summary: 用户搜索
|
summary: 用户搜索
|
||||||
)
|
)
|
||||||
@handler searchUser
|
@handler searchUser
|
||||||
get /api/user/search (UserSearchReq) returns (UserInfoReply)
|
get /user/search (UserSearchReq) returns (UserInfoReply)
|
||||||
}
|
}
|
@ -36,6 +36,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"requestBody": {},
|
||||||
"tags": [
|
"tags": [
|
||||||
"user-api"
|
"user-api"
|
||||||
]
|
]
|
||||||
@ -54,6 +55,7 @@
|
|||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"name": "body",
|
"name": "body",
|
||||||
|
"description": "注册请求结构",
|
||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
@ -61,6 +63,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"requestBody": {},
|
||||||
"tags": [
|
"tags": [
|
||||||
"user-api"
|
"user-api"
|
||||||
]
|
]
|
||||||
@ -87,6 +90,7 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"requestBody": {},
|
||||||
"tags": [
|
"tags": [
|
||||||
"user-api"
|
"user-api"
|
||||||
]
|
]
|
||||||
@ -112,6 +116,7 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"requestBody": {},
|
||||||
"tags": [
|
"tags": [
|
||||||
"user-api"
|
"user-api"
|
||||||
]
|
]
|
||||||
@ -222,5 +227,10 @@
|
|||||||
"name": "Authorization",
|
"name": "Authorization",
|
||||||
"in": "header"
|
"in": "header"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"apiKey": []
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
@ -8,26 +8,24 @@ import (
|
|||||||
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
|
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var swaggerMapTypes = map[string]reflect.Kind{
|
||||||
swaggerMapTypes = map[string]reflect.Kind{
|
"string": reflect.String,
|
||||||
"string": reflect.String,
|
"int": reflect.Int,
|
||||||
"int": reflect.Int,
|
"int32": reflect.Int,
|
||||||
"int32": reflect.Int,
|
"uint32": reflect.Int,
|
||||||
"uint32": reflect.Int,
|
"uint64": reflect.Int64,
|
||||||
"uint64": reflect.Int64,
|
"int64": reflect.Int64,
|
||||||
"int64": reflect.Int64,
|
"[]string": reflect.Slice,
|
||||||
"[]string": reflect.Slice,
|
"[]int": reflect.Slice,
|
||||||
"[]int": reflect.Slice,
|
"[]int64": reflect.Slice,
|
||||||
"[]int64": reflect.Slice,
|
"[]int32": reflect.Slice,
|
||||||
"[]int32": reflect.Slice,
|
"[]uint32": reflect.Slice,
|
||||||
"[]uint32": reflect.Slice,
|
"[]uint64": reflect.Slice,
|
||||||
"[]uint64": reflect.Slice,
|
"bool": reflect.Bool,
|
||||||
"bool": reflect.Bool,
|
"struct": reflect.Struct,
|
||||||
"struct": reflect.Struct,
|
"float32": reflect.Float32,
|
||||||
"float32": reflect.Float32,
|
"float64": reflect.Float64,
|
||||||
"float64": reflect.Float64,
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// http://swagger.io/specification/#infoObject
|
// http://swagger.io/specification/#infoObject
|
||||||
type swaggerInfoObject struct {
|
type swaggerInfoObject struct {
|
||||||
@ -116,14 +114,20 @@ type swaggerOperationObject struct {
|
|||||||
OperationID string `json:"operationId"`
|
OperationID string `json:"operationId"`
|
||||||
Responses swaggerResponsesObject `json:"responses"`
|
Responses swaggerResponsesObject `json:"responses"`
|
||||||
Parameters swaggerParametersObject `json:"parameters,omitempty"`
|
Parameters swaggerParametersObject `json:"parameters,omitempty"`
|
||||||
Tags []string `json:"tags,omitempty"`
|
RequestBody struct {
|
||||||
Deprecated bool `json:"deprecated,omitempty"`
|
Content swaggerContentObject `json:"content,omitempty"`
|
||||||
|
} `json:"requestBody,omitempty"`
|
||||||
|
Tags []string `json:"tags,omitempty"`
|
||||||
|
Deprecated bool `json:"deprecated,omitempty"`
|
||||||
|
|
||||||
Security *[]swaggerSecurityRequirementObject `json:"security,omitempty"`
|
Security *[]swaggerSecurityRequirementObject `json:"security,omitempty"`
|
||||||
ExternalDocs *swaggerExternalDocumentationObject `json:"externalDocs,omitempty"`
|
ExternalDocs *swaggerExternalDocumentationObject `json:"externalDocs,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type swaggerParametersObject []swaggerParameterObject
|
type (
|
||||||
|
swaggerParametersObject []swaggerParameterObject
|
||||||
|
swaggerContentObject map[string]swaggerParametersObject
|
||||||
|
)
|
||||||
|
|
||||||
// http://swagger.io/specification/#parameterObject
|
// http://swagger.io/specification/#parameterObject
|
||||||
type swaggerParameterObject struct {
|
type swaggerParameterObject struct {
|
||||||
|
@ -73,7 +73,8 @@ func applyGenerate(p *plugin.Plugin, host string, basePath string) (*swaggerObje
|
|||||||
func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swaggerPathsObject, requestResponseRefs refMap) {
|
func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swaggerPathsObject, requestResponseRefs refMap) {
|
||||||
for _, group := range groups {
|
for _, group := range groups {
|
||||||
for _, route := range group.Routes {
|
for _, route := range group.Routes {
|
||||||
path := route.Path
|
|
||||||
|
path := group.GetAnnotation("prefix") + route.Path
|
||||||
parameters := swaggerParametersObject{}
|
parameters := swaggerParametersObject{}
|
||||||
|
|
||||||
if countParams(path) > 0 {
|
if countParams(path) > 0 {
|
||||||
@ -163,12 +164,21 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
|
|||||||
Ref: reqRef,
|
Ref: reqRef,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
parameters = append(parameters, swaggerParameterObject{
|
|
||||||
|
parameter := swaggerParameterObject{
|
||||||
Name: "body",
|
Name: "body",
|
||||||
In: "body",
|
In: "body",
|
||||||
Required: true,
|
Required: true,
|
||||||
Schema: &schema,
|
Schema: &schema,
|
||||||
})
|
}
|
||||||
|
doc := strings.Join(route.RequestType.Documents(), ",")
|
||||||
|
doc = strings.Replace(doc, "//", "", -1)
|
||||||
|
|
||||||
|
if doc != "" {
|
||||||
|
parameter.Description = doc
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters = append(parameters, parameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,6 +242,8 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
|
|||||||
pathItemObject.Delete = operationObject
|
pathItemObject.Delete = operationObject
|
||||||
case http.MethodPut:
|
case http.MethodPut:
|
||||||
pathItemObject.Put = operationObject
|
pathItemObject.Put = operationObject
|
||||||
|
case http.MethodPatch:
|
||||||
|
pathItemObject.Put = operationObject
|
||||||
}
|
}
|
||||||
|
|
||||||
paths[path] = pathItemObject
|
paths[path] = pathItemObject
|
||||||
|
4
go.mod
4
go.mod
@ -3,9 +3,9 @@ module github.com/zeromicro/goctl-swagger
|
|||||||
go 1.16
|
go 1.16
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0
|
github.com/grpc-ecosystem/grpc-gateway v1.16.0
|
||||||
github.com/urfave/cli/v2 v2.3.0
|
github.com/urfave/cli/v2 v2.3.0
|
||||||
github.com/zeromicro/go-zero v1.3.0 // indirect
|
github.com/zeromicro/go-zero/tools/goctl v1.3.2
|
||||||
github.com/zeromicro/go-zero/tools/goctl v1.3.1
|
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||||
)
|
)
|
||||||
|
5
go.sum
5
go.sum
@ -344,11 +344,10 @@ github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJB
|
|||||||
github.com/zeromicro/antlr v0.0.1 h1:CQpIn/dc0pUjgGQ81y98s/NGOm2Hfru2NNio2I9mQgk=
|
github.com/zeromicro/antlr v0.0.1 h1:CQpIn/dc0pUjgGQ81y98s/NGOm2Hfru2NNio2I9mQgk=
|
||||||
github.com/zeromicro/antlr v0.0.1/go.mod h1:nfpjEwFR6Q4xGDJMcZnCL9tEfQRgszMwu3rDz2Z+p5M=
|
github.com/zeromicro/antlr v0.0.1/go.mod h1:nfpjEwFR6Q4xGDJMcZnCL9tEfQRgszMwu3rDz2Z+p5M=
|
||||||
github.com/zeromicro/ddl-parser v0.0.0-20210712021150-63520aca7348/go.mod h1:ISU/8NuPyEpl9pa17Py9TBPetMjtsiHrb9f5XGiYbo8=
|
github.com/zeromicro/ddl-parser v0.0.0-20210712021150-63520aca7348/go.mod h1:ISU/8NuPyEpl9pa17Py9TBPetMjtsiHrb9f5XGiYbo8=
|
||||||
github.com/zeromicro/go-zero v1.3.0-beta/go.mod h1:Hy4o1VFAt32lXaQMbaBhoFeZjA/rJqJ4PTGNdGsURcc=
|
|
||||||
github.com/zeromicro/go-zero v1.3.0 h1:Eyn36yBtR043sm4YKmxR6eS3UA/GtZDktQ+UqIJ3Lm0=
|
github.com/zeromicro/go-zero v1.3.0 h1:Eyn36yBtR043sm4YKmxR6eS3UA/GtZDktQ+UqIJ3Lm0=
|
||||||
github.com/zeromicro/go-zero v1.3.0/go.mod h1:Hy4o1VFAt32lXaQMbaBhoFeZjA/rJqJ4PTGNdGsURcc=
|
github.com/zeromicro/go-zero v1.3.0/go.mod h1:Hy4o1VFAt32lXaQMbaBhoFeZjA/rJqJ4PTGNdGsURcc=
|
||||||
github.com/zeromicro/go-zero/tools/goctl v1.3.1 h1:vxglEHXkQahTXUaDx3Fm3hJo/wnbUfD4fLUIDzagDUE=
|
github.com/zeromicro/go-zero/tools/goctl v1.3.2 h1:0ou75pfWW/iQJVrIKZGKHr1JeSdy6fqqTFqdTrZQyiI=
|
||||||
github.com/zeromicro/go-zero/tools/goctl v1.3.1/go.mod h1:NgoaFeaNoPbEoGGgexecELpOya32bqYF+3AKz95n0Sg=
|
github.com/zeromicro/go-zero/tools/goctl v1.3.2/go.mod h1:VtRqVUytXEHox6vDmkFAY9zDkmSQI4CZYuKNi3xVCQg=
|
||||||
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
|
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
|
||||||
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
|
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
|
||||||
go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q=
|
go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user