一个小技巧:修改swagger源码让postman更好用
Posted -_-void
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个小技巧:修改swagger源码让postman更好用相关的知识,希望对你有一定的参考价值。
本文假设你知道swagger,并且会用go:generate swagger generate spec -o swagger.json
生成json。
首先生成的swagger.json
是可以直接导入到postman的,其中的example会导入到postman的example。
// SignInParameter
// swagger:parameters SignIn
type SignInParameter struct
// required: true
// in: body
Data struct
// example: admin
Email string `json:"email"`
// example: admin
Password string `json:"password"`
`json:"data"`
这样example就导入到postman的example里,在postman使用时需要把example的值复制到对应的请求体或者参数中。而有时候希望导入到postman的request可以直接send而不是再挨个设置一遍请求体或请求参数,这个时候可以用default。
// SignInParameter
// swagger:parameters SignIn
type SignInParameter struct
// required: true
// in: body
Data struct
// default: admin
Email string `json:"email"`
// default: admin
Password string `json:"password"`
`json:"data"`
不过swagger官方不建议给必填项设置默认值,也不建议为用户名密码这种敏感字段设置默认值,而且所有的默认值在生成SDK时都会带进SDK的代码里去。所以上面的例子虽然能用,但总归不太好。
这里提供一种小技巧来同时满足这两种用法:通过修改swagger源码,生成swagger-pm.exe
,原来的swagger.exe
用来生成json给sdk用,而swagger-pm.exe
生成的json用给postman。
swagger-pm生成方式:
- 从github拉取源码
git clone https://github.com/go-swagger/go-swagger.git
- 在
codescan/parser.go
中func (se *setExample) Parse(lines []string) error
方法内的se.builder.SetExample(d)
下添加一行se.builder.SetDefault(d)
- 在
cmd/swagger
下执行go build
,将生成的swagger.exe
重命名为swagger-pm.exe
并放到GOPATH/bin
下
这样用swagger-pm.exe
生成出来的json中,example直接赋值给default,这样就可以不必在代码中放置不必要的// default: xxx
。
以上是关于一个小技巧:修改swagger源码让postman更好用的主要内容,如果未能解决你的问题,请参考以下文章