Pick Swagger from code which wrote by gin
- pick path and method from
*gin.Engine
or*gin.RouterGroup
- path of
*gin.RouterGroup
will be prefix of path of*gin.Engine
- only support
GET
POST
PUT
PATCH
HEAD
DELETE
OPTIONS
- gin-style router will be convert to swagger-style,
:id
=>{id}
, double check with parameter definitions, undefined path parameter will be use0
instead.
- pick operation in scope of gin-handler (not support anonymous func, we need func name as operationId)
- name of gin-handler will be
operationId
- only support single gin-handler.
- struct type of variable
req
orrequest
in scope of gin-handler will be used for picking parameters. - tag
in
of struct field must be defined, expect body parameter, but need to use fieldNameBody
. - tag
json
will be used asname
- struct type of anonymous struct field will be picked too.
- others will be same as Schema
-
status
will be picked by gin-context render method. -
c.JSON
will set schema by type of return value and with produceapplication/json
-
c.HTML
will with produceapplication/html
-
c.Rediect
c.Data
andc.Render
will be no responce
- only support
json
- basic type will be translated, but
json:"key,string"
will force converting tostring
- tag
default
will be set the default value, if it not exists, we will set fieldrequired
- tag
validate
will be set common validations, for example,validate:"@int[0,100)"
will be{ "minimum": 0, "exclusiveMinimum": true, "maximum": 100 }
- anonymous struct field will be used with
allOf
-
pick
enum
from commentedswagger:enum
type -
string
enum
from const
// swagger:enum State
type State int
const (
STATE_UNKNOWN = iota
STATE__ONE // one
STATE__TWO // two
STATE__THREE // three
)
will be
{
"enum": [
"ONE",
"TWO",
"THREE"
],
"x-enum-labels": [
"one",
"two",
"three"
],
"x-enum-type": "State"
}
-
validate:"@string{ONE,TWO}"
orvalidate:"@int{1,2}"
will be used for partial pick enum values;
- pick format from commented
swagger:strfmt <format-name>
type
- only collect the named complex type, like struct type, slice type, map type