Swagger/OpenAPI 生成工具(Java):库与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swagger/OpenAPI 生成工具(Java):库与工具完整概览



现代 Java REST API 开发离不开高质量的文档。OpenAPI 标准(原名 Swagger 规范)已成为描述 HTTP API 的事实行业标准。本文将详细解析 Java 应用中用于生成 OpenAPI 规范的主要库和工具,包括其功能、使用示例及选型标准。



什么是 OpenAPI,为什么需要它?



OpenAPI 是一种规范,用于以 JSON 或 YAML 格式描述 RESTful API。它包含:

  • 端点列表及 HTTP 方法;
  • 数据模型(请求和响应模式);
  • 参数(query、path、header);
  • 身份验证和授权信息。

基于 OpenAPI 生成的文档可以自动创建客户端 SDK、进行测试,并保持 API 描述的时效性。Java 生态中有多个成熟的解决方案。



1. SpringDoc OpenAPI(推荐用于 Spring Boot)



SpringDoc 是 Spring 生态中最流行的 OpenAPI 3 生成库。它能自动扫描控制器、@RequestMapping、@GetMapping 等注解,并基于它们构建规范。



依赖配置(Maven)

<dependency>    <groupId>org.springdoc</groupId>    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>    <version>2.6.0</version></dependency>


带注解的控制器示例

@RestController@RequestMapping("/api/users")public class UserController {

@Operation(summary = "根据 ID 获取用户") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "找到用户"), @ApiResponse(responseCode = "404", description = "未找到用户") }) @GetMapping("/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { // 业务逻辑 return ResponseEntity.ok(new User(id, "伊万", "ivan@example.com")); }}

启动应用后,文档可通过 /swagger-ui.html 访问,JSON 格式的规范可通过 /v3/api-docs 获取。



2. Swagger Core(OpenAPI 3.0)



Swagger Core 是由规范创建者提供的底层库。它允许以编程方式构建 OpenAPI 对象,并将其序列化为 JSON/YAML。适用于需要精细控制生成过程的场景。



编程创建规范的示例

import io.swagger.v3.oas.models.*;import io.swagger.v3.oas.models.info.*;

OpenAPI openAPI = new OpenAPI() .info(new Info() .title("示例 API") .version("1.0.0") .description("手动创建的文档")) .path("/hello", new PathItem() .get(new Operation() .summary("问候") .operationId("sayHello") .addParametersItem(new Parameter() .name("name") .in("query") .required(false) .schema(new StringSchema())) .responses(new ApiResponses() .addApiResponse("200", new ApiResponse() .description("OK") .content(new Content() .addMediaType("text/plain", new MediaType().schema(new StringSchema())))))));

// 序列化为 JSONObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(openAPI);System.out.println(json);


3. OpenAPI Generator(根据规范生成代码)



OpenAPI Generator 是一种反向工具

推荐