一个小技巧:修改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.gofunc (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更好用的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core小技巧 - 使用Swagger上传文件

Postman使用小技巧

Postman 测试swagger类接口技巧

postman 中的小技巧

Postman小技巧之定义环境变量(Environment)

接口测试—postman5分钟让你学会接口测试工具——postman的基础常用技巧,看完少走一周时间的弯路建议收藏