Springdoc配置参数详解

文章目录


系列文章:
springboot-swagger详解
springboot-优美的Knife4j文档-Swagger进化
Spring Cloud Gateway 网关整合 Knife4j
SpringBoot之如何集成SpringDoc最详细文档

1. API 文档基础配置

springdoc.api-docs.enabled - 是否启用 API 文档-

  • springdoc.api-docs.enabled
    • 作用:启用或禁用 OpenAPI 文档生成功能。
    • 默认值true
    • 效果
      如果设置为 false,将禁用 /v3/api-docs 端点,无法访问 OpenAPI JSON 数据。
    • 示例
      springdoc.api-docs.enabled=false
      

springdoc.api - docs.path-API 文档路径

  • springdoc.api-docs.path
    • 作用:指定 OpenAPI JSON 文档的访问路径。
    • 默认值/v3/api-docs
    • 效果
      访问路径变为 /openapi.json,例如:http://localhost:8080/openapi.json
    • 示例
      springdoc.api-docs.path=/openapi.json
      

springdoc.api-docs.groups.enabled - 是否启用分组功能,支持多个 API 分组

  • 作用:是否启用分组功能,支持多个 API 分组。

  • 默认值false

  • 示例

    springdoc.api-docs.groups.enabled=true
    
  • 效果
    启用后,可以通过分组区分不同的 API 文档(如公共 API 和管理员 API)。

2.Swagger UI 配置

springdoc.swagger-ui.enabled - 是否启用 Swagger UI-

  • springdoc.swagger-ui.enabled
    • 作用:启用或禁用 Swagger UI。
    • 默认值true
    • 效果
      如果设置为 false,将禁用 Swagger UI 页面(通常位于 /swagger-ui.html)。
    • 示例
      springdoc.swagger-ui.enabled=false
      

尽管 OpenAPI 文档本身已经包含了完整的 API 描述信息,但 Swagger UI 提供了一个更友好的界面,使得开发者可以更方便地浏览和测试 API。以下是一些常见的 Swagger UI 配置及其作用:

Swagger UI 是 OpenAPI 文档的补充工具,它将 API 文档以图形化的方式呈现出来,并提供了交互式功能,极大地方便了开发者的使用。虽然 OpenAPI 文档本身已经足够强大,但 Swagger UI 让文档更加直观、易用。

springdoc.swagger-ui.path - Swagger UI 路径

  • springdoc.swagger-ui.path
    • 作用:指定 Swagger UI 的访问路径。

    • 默认值/swagger-ui.html

    • 效果
      Swagger UI 的访问路径变为 /docs,例如:http://localhost:8080/docs

    • 示例

      springdoc.swagger-ui.path=/docs
      

springdoc.swagger-ui.config-url - 指定自定义的 OpenAPI 配置文件路径。

  • 默认值:无

  • 示例

    springdoc.swagger-ui.config-url=/custom-config.json
    
  • 效果
    Swagger UI 将加载自定义配置文件 /custom-config.json

springdoc.swagger-ui.disable-swagger-default-url - 是否禁用默认的 OpenAPI 文档 URL。

  • 默认值false

  • 示例

    springdoc.swagger-ui.disable-swagger-default-url=true
    
  • 效果
    禁用后,Swagger UI 不会自动加载默认的 /v3/api-docs URL。

springdoc.swagger-ui.oauth.client-id-配置 OAuth2 客户端 ID

  • 作用:配置 OAuth2 客户端 ID,用于 Swagger UI 的 OAuth2 登录。

  • 默认值:无

  • 示例

    springdoc.swagger-ui.oauth.client-id=my-client-id
    springdoc.swagger-ui.oauth.client-secret=my-secret
    
  • 效果
    在 Swagger UI 中显示 OAuth2 登录选项,并使用配置的客户端信息进行认证。


springdoc.swagger-ui.locale - Swagger UI 的界面语言切换为中文

  • 作用:设置 Swagger UI 的语言。

  • 默认值en

  • 示例

    springdoc.swagger-ui.locale=zh-CN
    
  • 效果
    Swagger UI 的界面语言切换为中文。


3. 全局元信息-info

springdoc.info.title - 应用标题

  • springdoc.info.title
    • 作用:设置 API 文档的标题。
    • 默认值:空
    • 示例
      springdoc.info.title=用户管理系统
      

springdoc.info.description - 应用描述

  • springdoc.info.description
    • 作用:设置 API 文档的描述信息。
    • 默认值:空
    • 示例
      springdoc.info.description=用户管理相关的 API 文档
      

pringdoc.info.version - 版本号

  • springdoc.info.version
    • 作用:设置 API 文档的版本号。
    • 默认值:空
    • 示例
      springdoc.info.version=1.0.0
      

springdoc.info.contact - 联系人信息

  • springdoc.info.contact.name
  • springdoc.info.contact.email
  • springdoc.info.contact.url
    • 作用:设置文档的联系人信息(姓名、邮箱、URL)。
    • 默认值:空
    • 示例
      springdoc.info.contact.name=John Doe
      springdoc.info.contact.email=john.doe@example.com
      springdoc.info.contact.url=http://example.com
      

springdoc.info.contact.name

  • 作用:定义联系人名称。

  • 默认值:无

  • 示例

    springdoc.info.contact.name=Support Team
    
  • 效果
    在生成的 OpenAPI 文档中显示联系人信息。


springdoc.info.contact.email

  • 作用:定义联系人的邮箱地址。

  • 默认值:无

  • 示例

    springdoc.info.contact.email=support@example.com
    
  • 效果
    在生成的 OpenAPI 文档中显示联系人邮箱。

pringdoc.info.license - 许可信息

  • springdoc.info.license.name
  • springdoc.info.license.url
    • 作用:设置文档的许可证信息(名称、URL)。
    • 默认值:空
    • 示例
      springdoc.info.license.name=Apache 2.0
      springdoc.info.license.url=https://www.apache.org/licenses/LICENSE-2.0
      

springdoc.info.license.name

  • 作用:定义许可证名称。

  • 默认值:无

  • 示例

    springdoc.info.license.name=Apache 2.0
    
  • 效果
    在生成的 OpenAPI 文档中显示许可证信息。


springdoc.info.license.url

  • 作用:定义许可证链接。

  • 默认值:无

  • 示例

    springdoc.info.license.url=https://www.apache.org/licenses/LICENSE-2.0.html
    
  • 效果
    在生成的 OpenAPI 文档中显示许可证链接。


4. 分组与模块化

springdoc.group-configs - 分组支持

  • springdoc.group-configs
    • 作用:为不同的控制器或包生成独立的 API 文档分组。
    • 示例
      springdoc.group-configs[0].group=user-api  #定义分组名称。
      springdoc.group-configs[0].paths-to-match=/api/user/** #定义分组匹配的路径。
      springdoc.group-configs[1].group=order-api
      springdoc.group-configs[2].paths-to-match=/api/order/** #定义分组匹配的路径。
      

springdoc.group-configs[0].group

  • 作用:定义分组名称。

  • 默认值:无

  • 示例

    springdoc.group-configs[0].group=public
    
  • 效果
    创建一个名为 public 的分组。


springdoc.group-configs[0].paths-to-match

  • 作用:定义分组匹配的路径。

  • 默认值:无

  • 示例

    springdoc.group-configs[0].paths-to-match=/api/public/**
    
  • 效果
    仅包含路径匹配 /api/public/** 的 API。

springdoc.packages-to-scan - 扫描包范围

  • springdoc.packages-to-scan
    • 作用:指定需要扫描的包范围,用于生成 API 文档。
    • 默认值:当前应用程序的所有包。
    • 效果
      仅扫描 com.example.api 包中的控制器生成文档。
    • 示例
      springdoc.packages-to-scan=com.example.api
      

springdoc.paths-to-exclude - 排除特定路径

  • springdoc.paths-to-exclude
    • 作用:排除某些路径,不将其包含在生成的 API 文档中。
    • 默认值:无
    • 效果
      排除所有以 /admin/ 开头的路径。
    • 示例
      springdoc.paths-to-exclude=/admin/**
      

5. 安全配置

springdoc.api-docs.security-schemes - 全局安全方案

  • springdoc.api-docs.security-schemes
    • 作用:定义全局的安全方案(如 OAuth2、API Key 等)。
    • 示例
      springdoc.api-docs.security-schemes[0].name=ApiKeyAuth
      springdoc.api-docs.security-schemes[0].type=apiKey
      springdoc.api-docs.security-schemes[0].in=header
      

springdoc.api-docs.security-requirements - 全局安全要求

  • springdoc.api-docs.security-requirements
    • 作用:定义全局的安全要求。
    • 示例
      springdoc.api-docs.security-requirements[0]=ApiKeyAuth
      

6. springdoc.cache.disabled - 自定义行为

springdoc.cache.disabled - 缓存控制

  • springdoc.cache.disabled
    • 作用:禁用 API 文档的缓存。
    • 默认值false
    • 效果
      每次请求都会重新生成 OpenAPI 文档。
    • 示例
      springdoc.cache.disabled=true
      

springdoc.default-flat-param-object - 排序规则

  • springdoc.default-flat-param-object
    • 作用:是否将参数对象展平为单个参数。
    • 默认值false
    • 示例
      springdoc.default-flat-param-object=true
      

springdoc.servers - 服务器地址-pringdoc.servers

  • 作用
    • 定义 OpenAPI 文档中的 servers 字段
      springdoc.servers 允许你在 OpenAPI 文档中显式列出一个或多个服务器地址(URL),并为每个地址添加描述信息。
    • 支持多环境或多网关配置
      如果你的 API 在不同的环境中运行(如开发、测试、生产)或者通过多个网关访问,可以通过 springdoc.servers 配置所有可能的服务器地址。
  • 示例
    springdoc.servers[0].url=http://localhost:8080
    springdoc.servers[0].description=本地开发环境
    springdoc.servers[1].url=https://api.example.com
    springdoc.servers[1].description=生产环境
    
  • 效果:
    Swagger UI 会显示一个下拉菜单,列出所有配置的服务器地址。
    开发者可以选择某个服务器地址进行 API 调用。
    适用于多环境或多网关的场景。

springdoc.gatewayUrl - 通过网关使用地址

  • 作用
    • 自动修正 OpenAPI 文档中的服务器地址为网关地址
      当你使用 Spring Cloud Gateway 或其他网关时,客户端实际访问的 API 地址是通过网关路由映射的,而不是后端服务的真实地址。springdoc.gatewayUrl 用于告诉 SpringDoc 客户端应该通过哪个网关地址访问 API。
    • 简化配置
      不需要手动列出多个服务器地址,只需要指定一个网关的基础 URL。
  • 示例
springdoc:
  gatewayUrl: http://gateway.example.com
  • 效果
    • Swagger UI 中的服务器地址会被修正为网关地址(http://gateway.example.com)。
    • API 路径会根据网关的路由规则自动调整(如 /api/v1/example)。
    • 适用于单网关的场景。

对比分析:springdoc.servers vs springdoc.gatewayUrl

特性springdoc.serversspringdoc.gatewayUrl
功能定义 OpenAPI 文档中的 servers 字段,支持多个地址自动修正文档中的服务器地址为网关地址
适用场景多环境(开发、测试、生产)、多网关单网关场景
是否支持多地址支持多个服务器地址只支持一个网关地址
是否需要手动配置路径需要手动配置路径和描述信息自动适配网关的路由规则
优先级如果同时配置了两者,springdoc.servers 优先级更高会被 springdoc.servers 覆盖
  • springdoc.gatewayUrl:适合单网关场景,自动修正服务器地址为网关地址,并适配网关的路由规则。
  • springdoc.servers:适合多环境或多网关场景,允许显式列出多个服务器地址,并为每个地址添加描述信息。
  • 如果需要更灵活的配置,建议使用 springdoc.servers;如果只是简单地适配网关,可以使用 springdoc.gatewayUrl

7. 高级配置

自定义 OpenAPI 对象

  • 作用:通过 Java 配置类自定义 OpenAPI 对象。
  • 示例
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
            .info(new Info()
                .title("用户管理系统")
                .version("1.0")
                .description("用户管理相关的 API 文档"))
            .addServersItem(new Server().url("http://localhost:8080").description("本地开发环境"));
    }
    

自定义 Swagger UI

  • 作用:通过 Java 配置类自定义 Swagger UI 行为。
  • 示例
    @Bean
    public SwaggerUiConfigProperties swaggerUiConfig() {
        SwaggerUiConfigProperties config = new SwaggerUiConfigProperties();
        config.setPath("/custom-docs");
        return config;
    }
    

8. 总结

以下是 springdoc 配置参数的分类总结:

类别参数作用
基础配置springdoc.api-docs.path, springdoc.swagger-ui.path, springdoc.api-docs.enabled配置 API 文档路径、Swagger UI 路径及启用状态。
全局元信息springdoc.info.title, springdoc.info.description, springdoc.info.version设置 API 文档的标题、描述、版本等基本信息。
分组与模块化springdoc.group-configs, springdoc.packages-to-scan, springdoc.paths-to-exclude支持分组、限制扫描范围、排除特定路径。
安全配置springdoc.api-docs.security-schemes, springdoc.api-docs.security-requirements定义全局安全方案和要求。
自定义行为springdoc.cache.disabled, springdoc.default-flat-param-object, springdoc.servers控制缓存、参数对象展平、服务器地址等高级功能。
高级配置自定义 OpenAPI 对象、Swagger UI 配置通过代码方式实现更灵活的定制。

9.配置实例

springdoc:
  api-docs:
    enabled: true
    path: /openapi.json
    groups:
      enabled: true
  swagger-ui:
    enabled: true
    path: /docs
    config-url: /custom-config.json
    disable-swagger-default-url: false
    oauth:
      client-id: my-client-id
      client-secret: my-secret
    locale: zh-CN
  info:
    title: User API
    description: API for managing users
    version: 1.0
    contact:
      name: Support Team
      email: support@example.com
    license:
      name: Apache 2.0
      url: https://www.apache.org/licenses/LICENSE-2.0.html
  group-configs:
    - group: public
      paths-to-match: /api/public/**
    - group: admin
      paths-to-match: /api/admin/**
  packages-to-scan: com.example.api
  paths-to-exclude: /internal/**
  oauth2:
    client-id: oauth-client-id
    client-secret: oauth-client-secret
  cache:
    disabled: false
  writer-with-default-pretty-printer: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值