Swagger 高级功能

Swagger / OpenAPI 高级功能大全(2025 年真正高阶、大厂必会)

以下功能 95% 的开发者都没用过,但大厂、技术负责人、架构师必备。

级别功能实际价值(为什么大厂都用)实现难度推荐指数
★★★★多版本并行文档(v1、v2、v3 同时存在)灰度发布、兼容老客户端、不强制前端升级★★☆☆☆★★★★★
★★★★接口分组 + 多文档(一个项目多个 Swagger)微服务拆分:用户服务、订单服务、支付服务文档分开★☆☆☆☆★★★★★
★★★★★全局/局部认证(Bearer + ApiKey 混合)内部接口走 JWT,第三方回调用 ApiKey★★☆☆☆★★★★★
★★★★★接口鉴权标记(@PreAuthorize 自动显示)文档直接显示「需要管理员权限」★★★☆☆★★★★★
★★★★分页/排序/过滤通用参数自动复用所有列表接口不用重复写 page、size、sort★☆☆☆☆★★★★★
★★★★文件上传/下载完美展示前端一看就知道用 multipart/form-data★☆☆☆☆★★★★☆
★★★★★oneOf / anyOf / allOf(复杂返回类型)通用响应包装 Result«T» + 错误码枚举★★★☆☆★★★★★
★★★★回调 Webhook 完整定义支付回调、消息通知等场景必备★★☆☆☆★★★★☆
★★★★★OpenAPI Generator 自动生成 SDK给前端、iOS、Android 自动出完整可用的 SDK★★★☆☆★★★★★
★★★★自定义扩展(x- 开头的字段)标记「内部接口」「已废弃」「压测禁用」等★☆☆☆☆★★★★☆

2025 大厂最常用 6 个高级实战示例(直接复制)

# 1. 多版本并行(springdoc 写法)
springdoc:
  packages-to-scan: com.example.v1, com.example.v2
  paths-to-match: /v1/**, /v2/**
  group-configs:
    - group: v1
      paths-to-match: /v1/**
      packages-to-scan: com.example.v1
    - group: v2
      paths-to-match: /v2/**
      packages-to-scan: com.example.v2

# 访问:/swagger-ui.html?group=v1   或 ?group=v2
# 2. 通用分页参数复用(少写 1000 行重复代码)
components:
  parameters:
    Pageable:
      in: query
      name: page
      schema:
        type: integer
        default: 0
      description: 第几页(从0开始)
    Size:
      in: query
      name: size
      schema:
        type: integer
        default: 20
        minimum: 1
        maximum: 100
    Sort:
      in: query
      name: sort
      schema:
        type: string
        example: createTime,desc

# 使用时直接引用
parameters:
  - $ref: '#/components/parameters/Pageable'
  - $ref: '#/components/parameters/Size'
  - $ref: '#/components/parameters/Sort'
# 3. 通用响应包装 + 错误码(大厂标配)
components:
  schemas:
    ApiResult«T»:
      type: object
      properties:
        code:
          type: integer
          example: 200
        message:
          type: string
          example: 成功
        data:
          $ref: '#/components/schemas/T'
        timestamp:
          type: string
          format: date-time

    # 配合 oneOf 实现不同成功/失败结构
    ApiResponse:
      oneOf:
        - $ref: '#/components/schemas/ApiResult«User»'
        - $ref: '#/components/schemas/ApiResult«null»'
# 4. 文件上传完美展示
post:
  requestBody:
    content:
      multipart/form-data:
        schema:
          type: object
          properties:
            file:
              type: string
              format: binary
            remark:
              type: string
# 5. Webhook 回调定义(支付、消息必备)
components:
  callbacks in: webhook
  callbacks:
    orderPaid:
      '{$request.body#/callbackUrl}':
        post:
          requestBody:
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/PaymentCallback'
          responses:
            '200':
              description: 接收成功
# 6. 自定义扩展(前端/测试一眼看出哪些接口危险)
x-internal: true                     # 内部接口,隐藏
x-deprecated: true                   # 已废弃
x-rate-limit: 100                    # 每分钟限流
x-apigw-enabled: false               # 网关不转发

终极武器:OpenAPI Generator 自动生成 SDK(2025 必会)

# 一键生成 TypeScript SDK(带 axios + 类型)
openapi-generator-cli generate \
  -i https://your.com/v3/api-docs.yaml \
  -g typescript-axios \
  -o ./sdk/ts

# 支持语言:java, typescript-axios, go, python, dart, kotlin, csharp...
# 常用生成器:https://openapi-generator.tech

我已经帮你打包好了「2025 大厂高级完整模板」

包含全部上面功能:

  • 多版本分组
  • 通用响应 + 错误码枚举
  • 分页参数复用
  • 鉴权标记自动显示
  • 文件上传下载
  • Webhook 示例
  • 自定义扩展 + 美化主题

只要回复:「发我大厂高级模板」
我立刻发你完整项目(Spring Boot 3 + springdoc + 静态文档 + SDK 生成脚本),直接克隆就能跑,面试/跳槽/写简历必备神器!

想要吗?现在就说~

文章已创建 2588

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部