ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3、swagger调试

2022-04-05 19:31:39  阅读:353  来源: 互联网

标签:swagger 配置 扫描 接口 application 参数 Swagger 调试


  • Swagger:

1、将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;

2、当接口更新之后,只需要修改代码中的Swagger描述就可以实时生成新的接口文档了,从而规避了接口文档老旧不能使用的问题;

3、通过Swagger页面,可以直接进行接口调用,降低了项目开发阶段的调试成本(在线测试)

 

  • Swagger配置:

1、添加swagger相关依赖:

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>

2、Swagger的configuration配置:

 1 @Configuration
 2 @EnableSwagger2
 3 public class SwaggerConfig {
 4     @Bean //配置docket以配置Swagger具体参数
 5     public Docket docket(Environment environment) {
 6 
 7         //动态配置项目所属什么环境时来显示swagger
 8         // 设置要显示swagger的环境
 9 //        Profiles of = Profiles.of("dev", "test");
10 
11         // 判断当前是否处于该环境
12         // 通过enable()方法接收此参数判断是否要显示
13 //        boolean flag = environment.acceptsProfiles(of);
14 
15         return new Docket(DocumentationType.SWAGGER_2)
16                 //配置文档页面信息
17                 .apiInfo(apiInfo())
18 
19                 //动态配置是否启用Swagger,如果是false,在浏览器将无法访问
20 //                .enable(flag)
21 
22                 //配置分组
23                 //配置多个分组只需要配置多个docket即可,不同docket有不同组名
24                 .groupName("组名")
25 
26                 //构建Docket时通过select()方法扫描接口
27                 .select()
28 
29 
30                 //RequestHandlerSelectors:配置要扫描接口的方式
31                     //1、扫描所有,项目中的所有接口都会被扫描到:any()
32                     //2、不扫描接口:none()
33                     //3、扫描方法上的注解:withMethodAnnotation(),
34                             // 如withMethodAnnotation(GetMapping.class)只扫描get请求
35                     //4、扫描类上的注解,参数是一个反射对象:withClassAnnotation(),
36                             // 如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
37                     //5、指定要扫描的包路径:basePackage(final String basePackage)
38                 //例:.apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
39                 .apis(RequestHandlerSelectors.basePackage("控制类所在包名"))
40 
41                 //配置如何通过path过滤,即这里只扫描请求以/controller开头的接口
42                     //1、任何请求都扫描:any()
43                     //2、任何请求都不扫描:none()
44                     //3、通过正则表达式控制:regex(final String pathRegex)
45                     //4、通过ant()控制:ant(final String antPattern)
46                 //例:.paths(PathSelectors.ant("/controller/**"))
47                 .paths(PathSelectors.ant("控制类中@RequestMapping中的路径"))
48                 .build();
49     }
50 
51     //配置文档信息
52     private ApiInfo apiInfo() {
53         Contact contact = new Contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱");
54         return new ApiInfo(
55                 "Swagger的学习笔记", // 标题
56                 "如何配置Swagger", // 描述
57                 "v1.0", // 版本
58                 "http://terms.service.url/组织链接", // 组织链接
59                 contact, // 联系人信息
60                 "Apach 2.0 许可", // 许可
61                 "许可链接", // 许可连接
62                 new ArrayList<>()// 扩展
63         );
64     }
65 
66     //配置分组一
67     @Bean
68     public Docket docket1() {
69         return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
70     }
71 
72     //配置分组二
73     @Bean
74     public Docket docket2() {
75         return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
76     }
77 }

3、测试访问:

http://localhost:8080/swagger-ui.html

 

  • Swagger常用注解:

  • 1、@Api详解:

用于标注一个Controller

属性

描述

value

url的路径值

tags

如果设置这个值、value的值会被覆盖

description

对api资源的描述

basePath

基本路径可以不配置

position

如果配置多个Api 想改变显示的顺序位置

produces

For example, "application/json, application/xml"

consumes

For example, "application/json, application/xml"

protocols

Possible values: http, https, ws, wss.

authorizations

高级特性认证时配置

hidden

配置为true 将在文档中隐藏

 

  • 2、@ApiOperation详解:

用于对一个操作或HTTP方法进行描述

属性

描述

value

url的路径值

tags

如果设置这个值、value的值会被覆盖

description

对api资源的描述

basePath

基本路径可以不配置

position

如果配置多个Api 想改变显示的顺序位置

produces

For example, "application/json, application/xml"

consumes

For example, "application/json, application/xml"

protocols

Possible values: http, https, ws, wss.

authorizations

高级特性认证时配置

hidden

配置为true 将在文档中隐藏

response

返回的对象

responseContainer

这些对象是有效的 "List", "Set" or "Map".,其他无效

httpMethod

"GET","HEAD","POST","PUT","DELETE","OPTIONS"and"PATCH"

code

http的状态码 默认 200

extensions

扩展属性

  • 3、@ApiParam详解:

用于请求方法中,定义api参数的注解

属性

描述

name

属性名称

value

属性值

defaultValue

默认属性值

allowableValues

可以不配置

required

是否属性必填

access

不过多描述

allowMultiple

默认为false

hidden

隐藏该属性

example

举例子

 

  • 4、@ApiImplicitParams、@ApiImplicitParam详解:

(1)、@ApiImplicitParams:用在请求的方法上,包含一组参数说明

(2)、@ApiImplicitParam:对单个参数的说明

属性

描述

name

参数名

value

参数的说明、描述

required

参数是否必须必填

paramType

参数放在哪个地方 

query --> 请求参数的获取:@RequestParam

header --> 请求参数的获取:@RequestHeader

path(用于restful接口)--> 请求参数的获取:@PathVariable

body(请求体)--> @RequestBody User user

form(普通表单提交)

dataType

参数类型,默认String,其它值dataType="Integer"

defaultValue

参数的默认值

  • 5、@ApiModel、@ApiModelProperty详解:

(1)、@ApiModel:用于描述一个Model的信息

(2)、@ApiModelProperty:用来描述一个Model的属性。

 

 

标签:swagger,配置,扫描,接口,application,参数,Swagger,调试
来源: https://www.cnblogs.com/Iven-L/p/16103546.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有