使用 Spring-Doc 生成接口文档

本文主要介绍如何使用 OpenAPI 3.0 为一个 Spring Boot 项目 (web 项目) 生成 API 文档。

常用注解

@Tag

@Tag 用于为 API 文档中的 API 分组,可以为 @Tag 指定 namedescriptionname 相同的 @Tag 会被合并到一起。

通常情况下,我们会使用 @Tag 标识一个 Controller 类。

@Operation

@Operation 用于为 API 文档中的 API 添加描述信息,可以为 @Operation 指定 summarydescription

@Parameters@Parameter

@Parameters 用于为 API 文档中的 API 添加参数信息,@Parameters 中包含多个 @Parameter

@Parameter 用于为 API 文档中的 API 添加参数信息,可以为 @Parameter 指定 nameindescriptionrequiredschema 等属性。

@Schema

@Schema 用于给对象添加描述信息,可以为 @Schema 指定 nametitledescriptionexample 等属性。

@Hidden, @Parameter(hidden = true)@Operation(hidden = true)

@Hidden 用于隐藏一个 Controller 类,@Parameter(hidden = true) 用于隐藏一个参数,@Operation(hidden = true) 用于隐藏一个 API (方法)。

@ApiResponses@ApiResponse

@ApiResponses 用于为 API 文档中的 API 添加响应信息,@ApiResponses 中包含多个 @ApiResponse

@ApiResponse 用于为 API 文档中的 API 添加响应信息,可以为 @ApiResponse 指定 responseCodedescriptioncontent 等属性。

一个完整的例子

我们首先为 DTO 对象添加各种的 @Schema 注解:

@Data
@Schema(description = "User Data Transfer Object")
public class UserDTO {
    @Schema(accessMode = Schema.AccessMode.READ_ONLY, description = "User ID")
    private Long id;
    @Schema(description = "Username", requiredMode = Schema.RequiredMode.REQUIRED, example = "admin")
    private String username;
    @Schema(description = "Email", requiredMode = Schema.RequiredMode.REQUIRED, example = "admin@cmipt.edu")
    private String email;
    @Schema(description = "User Password (Unencrypted)", requiredMode = Schema.RequiredMode.REQUIRED, example = "admin")
    private String userPassword;
}

接下来我们为一个 Controller 类添加 @Tag@Operation@ApiResponses@ApiResponse 等注解:

@Controller
@RequestMapping("/user")
@Tag(name = "User", description = "User Related APIs")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    @Operation(
        summary = "Create a new user",
        description = "Create a new user with the given information",
        tags = { "User", "Post Method" }
    )
    @ApiResponses({
            @ApiResponse(responseCode = "200", description = "User created successfully"),
            @ApiResponse(responseCode = "400", description = "User creation failed")
    })
    public ResponseEntity<Void> createUser(@RequestBody UserDTO user) {
        // some code here
        return ResponseEntity.ok().build();
    }
}

经过上面的操作后,我们启动程序,访问 http://localhost:8080/swagger-ui/index.html,就可以看到生成的 API 文档了。




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • IEEE Xtreme 18.0 题解
  • 马拉松 4 小时挑战记录
  • ssh 端口转发简介
  • 服务器上创建 git 远程仓库
  • Spring Boot Test 自定义测试类顺序