<
学习笔记 Swagger
>
上一篇

Android 依赖项注入 hilt
下一篇

批处理 bat 管理员身份运行

swagger

spring boot 3.x 通过 starter 整合 swagger3

spring boot 2.x and 1.x 请使用 springdoc-openapi v1.7.0

依赖

// swagger3
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-api:2.2.0'

配置文件

# 配置 swagger 文档的访问路径,访问地址:http://127.0.0.1:8080/swagger-ui/index.html
springdoc.swagger-ui.path=/swagger-ui/index.html

配置类

@Configuration
@EnableWebMvc // @EnableWebFlux 支持 WebFlux
class SwaggerConfig {

    @Bean
    fun springShopOpenAPI(): OpenAPI {
        return OpenAPI()
            .info(
                Info().title("丝袜哥接口文档")
                    .description("暂无描述")
                    .version("v1.0 测试版")
                    .license(License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0"))
            )
            .externalDocs(
                ExternalDocumentation()
                    .description("SpringDoc")
                    .url("http://springdoc.org")
            )
    }

}

swagger v2 注解

swagger v3 注解

  1. 基本信息注解
    • @OpenAPIDefinition
    • @Info
    • @Contact
    • @License
  2. 分组注解
    • @Tag
  3. 请求方法注解
    • @Operation
    • @Parameter
    • @RequestBody
    • @ApiResponse
    • @Content
    • @Schema
  4. 路径注解
    • @Path
    • @PathVariable
    • @RequestParam
    • @RequestBody
  5. 响应注解
    • @ApiResponse
    • @Content
    • @Schema

6.使用示例

@RestController
@RequestMapping("/api/users")
@Tag(name = "用户管理", description = "用于管理用户信息")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    @Operation(summary = "根据ID获取用户信息", description = "根据用户ID查询用户的详细信息")
    @ApiResponse(responseCode = "200", description = "成功获取用户信息")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<User> getUserById(@PathVariable("id") Long id) {
        User user = userService.getUserById(id);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

    @PostMapping
    @Operation(summary = "创建用户", description = "创建新用户")
    @ApiResponse(responseCode = "201", description = "成功创建用户")
    public ResponseEntity<User> createUser(@RequestBody CreateUserRequest request) {
        User user = userService.createUser(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(user);
    }

    @PutMapping("/{id}")
    @Operation(summary = "更新用户信息", description = "根据用户ID更新用户的信息")
    @ApiResponse(responseCode = "200", description = "成功更新用户信息")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<User> updateUser(@PathVariable("id") Long id, @RequestBody UpdateUserRequest request) {
        User user = userService.updateUser(id, request);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

    @DeleteMapping("/{id}")
    @Operation(summary = "删除用户", description = "根据用户ID删除用户")
    @ApiResponse(responseCode = "204", description = "成功删除用户")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<Void> deleteUser(@PathVariable("id") Long id) {
        boolean deleted = userService.deleteUser(id);
        if (deleted) {
            return ResponseEntity.noContent().build();
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}

参考 Swagger 3 注解使用指南

Top
Foot