作用: 前后端分离时期,前端人员和后端人员如果没有一个统一的接口文档,后期对接会产生很多问题,Swagger可以解决此类问题。
Swagger号称世界上最流行的Api框架;RestFul Api文档在线自动生成工具;Api文档和API实时同步swagger依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>创建swaggerConfig配置类
package com.lyj.swagger.config; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 //开启swagger public class SwaggerConfig { }测试连接:http://localhost:8080/swagger-ui.html (3.0之前的)
通过源码分析Docket实例化
通过构造方法可知需要一个DocumentationType对象
在DocumentationType类中三个DocumentationType的静态属性:我们选择SWAGGER_2
配置Swagger通过对象.属性设置
由于 ApiInfo 有 ApiInfo对象,我们可以模仿着写
new ApiInfo( "Api Documentation", "Api Documentation", "1.0", //版本 "urn:tos", DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());DEFAULT_CONTACT,则模仿前面的
//配置Swagger信息=apiInfo private ApiInfo apiInfo(){ Contact contact = new Contact("龙泳机", "http://www.longyongji.cn/", "1922053569@qq.com"); return new ApiInfo( "龙泳机的SwaggerApi文档", "Swagger学习", "1.0", "http://www.longyongji.cn/", contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList()); }测试:
@Api() :用于类,表示标识这个类是swagger的资源
@ApiOperation(): 用于方法:实现Operation接口,接口注,表示一个http请求的操作
@@ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
@ApiModel():用于类 表示对类进行说明,用于参数用实体类接收
@ApiModelProperty():用于方法,字段; 表示对model属性的说明或者数据操作更改
@RestController public class HelloController { @GetMapping(value = "/hello") public String Hello(){ return "hello"; } @PostMapping(value = "/user") public User user(){ return new User(); } @ApiOperation("Hello控制类")//Operation接口,接口注释 @GetMapping(value = "/hello2") public String Hello2(@ApiParam("用户名") String username){//@ApiParam参数接口注释 return "hello"+username; } } @ApiModel("实体类") public class User { @ApiModelProperty("用户名") public String username; @ApiModelProperty("密码") public String password; }界面效果:@ApiOperation(),@ApiParam(),@ApiModel(),@ApiModelProperty()效果展示