1.Swagger是什么?
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。(ps:来源于网上)
简单来说:Swagger就是一个接口可视化文档,它是在线的,在我们进行前后端分离开发的时候,方便前端人员与后端人员开发;减少因为接口约定不一致的原因而多做的工作量。
2.怎么去使用Swagger?
其实Swagger的使用很简单,只需要简单的几步就可以使用了。ps:这里使用Swagger是结合Spring-Boot的使用。
2.1 导入swagger所使用的依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.19</version>
</dependency>
2.2 添加一个Swagger的配置类
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("hello")
//接口文档的信息
.apiInfo(api())
.select()
//要扫描的Controller包的位置
.apis(RequestHandlerSelectors.basePackage("com.example.wangwang.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo api() {
return new ApiInfoBuilder()
.title("Spring-Boot中结合Swagger的使用")
.description("没什么可描述的")
.termsOfServiceUrl("www.baidu.com")
.version("1.0.0")
.build();
}
}
2.3 在Controller中填写Api的信息
常用注解
- @Api:用于修饰Controller类,生成Controller相关文档信息
- @ApiOperation:用于修饰Controller类中的方法,生成接口方法相关文档信息
- @ApiParam:用于修饰接口中的参数,生成接口参数相关文档信息
- @ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息
@RestController
@Api(tags = "TestController",description = "测试接口")
public class TestController {
@RequestMapping(value = "getUserInfo",method = RequestMethod.GET)
@ApiOperation("获取某用户的信息")
public String showAlluser(){
//这里就不写业务代码了
return "hello";
}
@ApiOperation("更新用户信息")
@RequestMapping(value = "updateUser",method = RequestMethod.POST)
public void updateUser(TbUser user){
//这里就不写业务代码了
}
}
运行项目
http://localhost:8080/swagger-ui.html#/
ps:当某接口的参数是一个实体类 可以加上@ApiModelProperty这个注解来描述相关的信息。
例如:
实体类:
完~~~~