YApi使用swagger导入接口无headers参数
2018-12-14 15:54
1361 查看
1、问题描述
在API文档与接口自动化测试对接时,使用原有是swagger导入接口,导入后接口参数信息自动罗列,但是进行自动化测试每个接口都需要相应的header信息,如果需要手动添加则大量复制工作降低效率
2、解决方法
1、在swagger配置文件中统一加上header参数,然后再导入
(1)修改swagger配置如下:
@Configuration @EnableSwagger2 public class SwaggerConfig { @Value("${swagger.host:}") private String host; @Bean public Docket buildAppDocket() { ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>(); tokenPar.name("Content-Type").description("").modelRef(new ModelRef("string")).defaultValue("application/json").parameterType("header").required(true).build(); pars.add(tokenPar.build()); tokenPar.name("accessToken").description("登录token").modelRef(new ModelRef("string")).parameterType("header").required(true).build(); pars.add(tokenPar.build()); tokenPar.name("clientId").description("客戶端id").parameterType("header").modelRef(new ModelRef("string")).required(true).build(); pars.add(tokenPar.build()); tokenPar.name("userId").description("用户id").modelRef(new ModelRef("string")).parameterType("header").required(true).build(); pars.add(tokenPar.build()); return new Docket(DocumentationType.SWAGGER_2) .host(host) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.zrk.study")) .build() .globalOperationParameters(pars);//添加参数 } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("接口文档").build(); }
可以定义ParameterBuilder 设置实际开发中所需要的请求头参数信息放入list中,然后在build()后 调用globalOperationParameters(pars)方法添加参数即可
(2)导入
-
URL导入模式
服务器地址+/actuator/swagger-docs,即为swagger url,并需要选择自己想把接口导入哪个分类,如上图“公共分类”,
注:需要在服务器上部署并启动该微服务 -
JSON文件导入模式
如果微服务部署到服务器并启动微服务或者本地启动该微服务,可以使用postman访问服务器地址+/actuator/swagger-docs接口接口,将返回json保存成json文件如swagger.json,直接拖入到上图下面红框内即可导入
2、熟悉swagger.json文件的话可以修改json文件(需要大量粘贴复制,但比较灵活)
{ "swagger": "2.0", "info": { "title": "接口文档" }, "host": "127.0.0.1:30091", "basePath": "/", "tags": [ { "name": "study-center" } ], "paths": { "/study-center/first/getClassInfo": { "get": { "tags": [ "study-center" ], "summary": "获取班级信息", "description": "", "operationId": "getClassInfoUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "Content-Type", "in": "header", "required": true, "type": "string", "default": "application/json" }, { "name": "accessToken", "in": "header", "description": "登录token", "required": true, "type": "string" }, { "name": "clientId", "in": "header", "description": "客戶端id", "required": true, "type": "string" }, { "name": "userId", "in": "header", "description": "用户id", "required": true, "type": "string" }, { "name": "classId", "in": "query", "description": "classId", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ReturnStatus" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false } }, "/study-center/first/getTeacherInfo": { "get": { "tags": [ "study-center" ], "summary": "获取老师信息", "description": "", "operationId": "getTeacherInfoUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "Content-Type", "in": "header", "required": true, "type": "string", "default": "application/json" }, { "name": "accessToken", "in": "header", "description": "登录token", "required": true, "type": "string" }, { "name": "clientId", "in": "header", "description": "客戶端id", "required": true, "type": "string" }, { "name": "userId", "in": "header", "description": "用户id", "required": true, "type": "string" }, { "name": "teacherId", "in": "query", "description": "teacherId", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ReturnStatus" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false } } }, "definitions": { "ReturnStatus": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object" } }, "page": { "$ref": "#/definitions/PageInfo" }, "property": { "type": "object" }, "status": { "$ref": "#/definitions/Status" } }, "title": "OperStatus" }, "PageInfo": { "type": "object", "properties": { "nextPage": { "type": "integer", "format": "int32" }, "pageSize": { "type": "integer", "format": "int32" }, "totalCou": { "type": "integer", "format": "int32" }, "totalPage": { "type": "integer", "format": "int32" } }, "title": "PageInfo" }, "Status": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32" }, "desc": { "type": "string" } }, "title": "Status" } } }
其中headers参数可以加在对应接口的parameters中,“in”取值为“header”
注:上面json文件是在导出的正式环境的swagger.json文件基础上进行的删减跟修改,仅供参考
3、结果
重新导入后,在Yapi操作页面找到对应接口可以看到已经有对应的headers参数信息,不需要每个接口一个一个字段复制
相关文章推荐
- Swagger2接口注释参数使用数组
- 接口测试工具-Jmeter使用笔记(三:管理请求服务器信息和Headers参数)
- 接口测试工具-Jmeter使用笔记(三:管理请求服务器信息和Headers参数)
- 使用支付宝对企业金流接口的注意事项--URL参数警报
- 使用IParameterInspector, IOperationBehavior,Attribute(参数检查器、操作行为接口和标签)扩展WCF操作行为
- 在.Net Core中使用Swagger制作接口文档
- bboss 持久层框架使用最佳实践-带连接(connection)参数接口和不带连接参数接口的选择
- 使用未公开关键字在 C# 中导入外部 printf 等参数数量可变函数 [2] C# 实现
- C#------如何使用Swagger调试接口
- asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档
- 如何编码之使用接口作为方法的参数类型
- iOS通过设置info.plist参数使用iTunes导入导出Documents目录下的文件
- 使用HandlerMethodArgumentResolver接口自定义Spring MVC的参数接受规则
- 17年2月26日Java后台学习记录,Mysql 多个timestamp,xml中使用小于号,Mybatisdao接口多个参数函数错误
- 根据条件、参数使用EXPDP和IMPDP导入导出Oracle数据库
- IT 接口后端:足迹第十七步Restful请求格式(如何使用Swagger自动生成接口的说明文档)
- 使用django的数据库接口导入csdn数据库
- 59.黑马程序员-Eclipse使用技巧、静态导入、可变参数
- 不要在linux上使用java 7 Files的接口参数StandardOpenOption.DELETE_ON_CLOSE
- 使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数