我们在写项目的使用,可以声明出一个开发文档给别人测试使用,而swagger就可以帮助我们实现生成接口文档,让我们可以实现postman一样的调用接口,查看返回值等,而且可以自定义注释,这样更加直观的展示我们项目的接口使用。
SpringBoot+Swagger2
- 概述:Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
- 官网
- 首先添加依赖: Swagger2和swagger ui
<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>
- 书写配置类:AppSwaggerConfig
@Configuration //spring注解,自动注入到容器中
@EnableSwagger2 //开启swagger2自动生成api文档的功能
public class AppSwaggerConfig {
@Bean("用户模块")
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("控制器包路径"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("系统平台接口文档")
.description("提供用户模块的文档")
.termsOfServiceUrl("https://blog.csdn.net/qq_43265564")
.version("1.0")
.build();
}
}
- 到这一步,我们就要开始想,我们需要提供哪些接口去生成文档呢?这里我们去controller中新建两个测试方法来生成测试文档。
- controler中的代码如下:
@Api(tags = "第一个Swagger测试")
@RestController
public class HelloController {
@ApiOperation("测试方法之hello")
@ApiImplicitParams(value={
@ApiImplicitParam(name="name",value="姓名",required = true),@ApiImplicitParam(name="age",value="年龄")
})
@GetMapping("/hello")
public String hello(String name){
return "OK"+name;
}
@ApiOperation("保存用户")
@ApiImplicitParams(value={
@ApiImplicitParam(name="name",value="姓名",required = true),@ApiImplicitParam(name="email",value="电子邮件")
})
@PostMapping("/user")
public User save(String name, String email){
User user = new User();
user.setName(name);
user.setEmail(email);
return user;
}
}
- 到这一步我们就可以把服务启动然后输入你配置好的端口号来访问:http://localhost:7000/swagger-ui.html,这里我配置的是7000端口。
- 最终实现效果:
- 文档已经写好了,我们怎么使用呢?也就是我们需要调用接口来看看我们写的接口是否达到我们的预期,点击一个接口,点击Try it out,就可以输入参数,然后点击Execute执行了。
总结
注解归纳
注解名称 | 作用 |
---|---|
@Api(tags = “XXXX”) | 这个是对控制器的解释说明,你可以自己注释其是什么服务的控制器 |
@ApiOperation(“XXX”) | 这个是对控制器中方法的注释,依赖帮助你对控制器中方法的解释,比如这个方法是原来注册用户的,你就可以写注册用户的控制器方法接口 |
@ApiImplicitParams | 用在请求的方法上,表示一组参数说明,比如你这个方法需要传入多个参数,你也可以声明这些参数是什么类型的,代表什么意思,使用value={}来存放下面的具体参数注解 |
@ApiImplicitParam | value:参数的汉字说明、解释。name:是需要解释的参数名。required:参数是否必须传。paramType:参数放在哪个地方。 dataType:参数类型,默认String,其它值dataType=“Integer”。defaultValue:参数的默认值 |
@ApiResponses | 用在请求的方法上,表示一组响应 |
@ApiResponse | 用在@ApiResponses中,一般用于表达一个错误的响应信息。code:数字,例如400。message:信息,例如"请求参数没填好"。response:抛出异常的类 |
@ApiModel | 主要有两种用途:1.用于响应类上,表示一个返回响应数据的信息。2.入参实体:使用@RequestBody这样的场景 |
@ApiModelProperty | 用在属性上,描述响应类的属性 |