swagger 2.9.2
依赖:
<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>
Swagger 2的配置类:
/**
* Created by xc on 2019/9/19
* Swagger2API文档的配置
* 2022/07/01 增加注释
* 2022/07/06 升级版本 2.6.1 -> 2.9.2
*/
@Configuration
@EnableSwagger2 // 开启Swagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
// 配置一个Docket
return new Docket(DocumentationType.SWAGGER_2) // DocumentationType 即文档类型的选择我们需要根据集成的 Swagger 的版本来选择,这里选择 SWAGGER_2 表示使用的 Swagger 是2.X系列版本。
.select()
.apis(RequestHandlerSelectors.basePackage("com.xc.xcspringboot.controller")) //为当前包下controller生成API文档
// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) //为有@Api注解的Controller生成API文档
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //为有@ApiOperation注解的方法生成API文档
.paths(PathSelectors.any()) // 将项目中所有接口的请求路径都暴露给 Swagger 来生成 Swagger-UI 界面
.build()
.apiInfo(
new ApiInfoBuilder()
.title("API测试文档xc") // Swagger-UI 界面的大标题
.description("xcspringboot项目") // Swagger-UI 界面的一些简单描述信息
.contact(new Contact("xc", "https://gitee.com/xxx", "xxx@xxx.com"))
.version("1.0") // 界面上所有接口的版本
.license("Apache2.0")
.licenseUrl("https://www.apache.org/licenses/LICENSE-2.0")
.build()
); // 在apiInfo中构建文档的基本信息
}
}
示例接口:
@Slf4j
@Api(tags = "用户数据接口") // @Api注解用在类上,用来描述整个Controller信息
@RestController
public class SwaggerUserController {
// @ApiOperation注解用在开发方法上,用来描述一个方法的基本信息,value是对方法作用的一个简短描述,notes则用来备注该方法的详细作用。
@ApiOperation(value = "查询用户", notes = "根据id查询用户")
/*
* @ApiImplicitParam注解用在方法上,用来描述方法的参数,
* paramType是指方法参数的类型,
* 可选值有path(参数获取方式@PathVariable)、query(参数获取方式@RequestParam)、header(参数获取方式@RequestHeader)、body以及form;
* name表示参数名称,和参数变量对应;
* value是参数的描述信息;
* required表示该字段是否必填;
* defaultValue表示该字段的默认值。
*
* 注意,这里的required和defaultValue等字段只是文档上的约束描述,并不能真正约束接口,约束接口还需要在@RequestParam中添加相关属性。
*
* 如果方法有多个参数,可以将多个参数的@ApiImplicitParam注解放到@ApiImplicitParams中。
*/
@ApiImplicitParam(paramType = "path", name = "id", value = "用户id", required = true)
@GetMapping("/user/{id}")
public String getUserById(@PathVariable Integer id) {
return "/user/" + id;
}
/*
* @ApiResponse注解是对响应结果的描述,
* code表示响应码,
* message表示相应的描述信息,
* 若有多个@ApiResponse,则放在一个@ApiResponses中。
*/
@ApiResponses({
@ApiResponse(code = 200, message = "删除成功!"),
@ApiResponse(code = 500, message = "删除失败!")})
@ApiOperation(value = "删除用户", notes = "通过id删除用户")
@DeleteMapping("/user/{id}")
public Integer deleteUserById(@PathVariable Integer id) {
return id;
}
@ApiOperation(value = "添加用户", notes = "添加- -个用户,传入用户名和地址")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "username", value = "用户名", required = true, defaultValue = "sang"),
@ApiImplicitParam(paramType = "query", name = "address", value = "用户地址", required = true, defaultValue = "shenzhen")
})
@PostMapping("/user")
public String addUser(@RequestParam String username, @RequestParam String address) {
return username + ":" + address;
}
// 使用@RequestBody注解来接收数据,此时可以通过@ApiModel注解和@ApiModelProperty注解配置User对象的描述信息。
@ApiOperation(value = "修改用户", notes = "修改用户,传入用户信息")
@PutMapping("/user")
public String updateUser(@RequestBody User user) {
return user.toString();
}
@GetMapping("/ignore")
@ApiIgnore // @ApiIgnore注解表示不对某个接口生成文档
public void ingoreMethod() {
}
}
@ApiModel(value = "用户实体类", description = "用户信息描述类")
@Data
public class User {
@ApiModelProperty(value = "用户名")
private String username;
@ApiModelProperty(value = "用户地址")
private String address;
}

浙公网安备 33010602011771号