SpringBoot中使用Swagger
第一步:加入相关依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
第二步:编写使用swagger注解
package com.controller;
import com.entity.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
// 说明该类的作用
@Api("springboot 使用swagger测试")
@RestController
public class testController {
// 说明方法的作用
@ApiOperation(value = "获取用户信息", notes = "根据id来获取用户详细信息")
// 说明请求的参数的详情
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", name="id", value = "用户id", dataType = "String"),
@ApiImplicitParam(paramType = "path", name="status", value = "用户状态", dataType = "Integer")
})
// 说明响应信息
@ApiResponses({
@ApiResponse(code = 200, message = "获取信息成功"),
@ApiResponse(code = 400, message = "缺少必要的请求参数")
})
@RequestMapping(value = "/swagger/{id}/{status}", method = RequestMethod.GET)
public User hello(@PathVariable("id") String id,
@PathVariable("status") Integer status){
User user = new User(id, "codekiang");
return user;
}
}
第三步:编写swagger配置类,配置api的基本信息
package com.conf;
import io.swagger.annotations.Api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2 // 开启swagger2的支持
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// apis指定哪些地方要生成api文档,可以指定包、注解所在的类、注解所在的方法
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build();
}
/**
* 创建api的基本信息
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springboot利用swagger构建api文档")
.description("简单优雅的restfun风格")
.version("1.0")
.build();
}
}
第四步:访问swagger.ui,地址为:服务器Ip + 服务器端口 + /swagger-ui.html
。本人测试访问的地址为 localhost:8443/swagger-ui.html
Swagger中常用注解的解释:
注解 | 作用 |
---|---|
@Api | 说明该类的作用 |
@ApiOperation | 说明该方法的作用 |
@ApiImplicitParams | 用在方法上,说明一组参数的详细信息。它是一个数组 |
@ApiImplicitParam | 用在@ApiImplicitParams中,详细说明参数信息。 |
paramType:说明参数在那个地方。 header表示参数使用@RequestHeader接收 query表示参数使用@RequestParam接收 body表示参数使用@RequestBody接收 | |
name:参数名 | |
dataType:参数类型 | |
value:参数的意思 | |
required:是否必传 | |
defaultValue:参数的默认值 | |
@ApiResponses | 用在方法上,表示一组响应 |
@ApiResponse | 用在@ApiResponses中,一般用于表达一个错误的响应信息 |
code:整数型,例如400 | |
message:code对应的信息 | |
@ApiModel | 描述一个model的信息 |
@ApiModelProperty | 描述一个model的属性 |