Spring中如何从生成的OpenAPI文档中排除servers节
OpenAPI 禁用servers节生成方案
不同技术栈下的常用实现方案如下:
Java Springdoc 场景
配置文件方式
Spring Boot项目可以直接在application.yml中添加如下配置,将servers设为空即可不生成对应字段:
springdoc: servers: ''
代码自定义方式
自定义OpenAPI Bean时不设置servers属性即可:
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("业务API文档") .version("1.0.0") .description("业务接口说明文档")); // 无需调用.servers()方法配置服务信息,生成时自动忽略该字段 } }
Python FastAPI 场景
初始化直接配置
实例化FastAPI对象时将servers参数设为空列表:
from fastapi import FastAPI app = FastAPI( title="业务API文档", version="1.0.0", servers=[] )
自定义OpenAPI生成逻辑
如果需要更精细的控制,可以重写openapi生成方法手动删除servers字段:
from fastapi import FastAPI from fastapi.openapi.utils import get_openapi app = FastAPI(title="业务API文档", version="1.0.0") def custom_openapi(): if app.openapi_schema: return app.openapi_schema openapi_schema = get_openapi( title=app.title, version=app.version, routes=app.routes ) # 手动移除servers字段 openapi_schema.pop("servers", None) app.openapi_schema = openapi_schema return app.openapi_schema app.openapi = custom_openapi
通用适配方案
无论使用哪种技术栈生成OpenAPI文档,都可以在拿到最终的JSON/YAML格式的api-docs内容后,手动删除顶级的servers字段即可,OpenAPI规范本身允许该字段不存在,缺失时会默认以当前访问路径的根路径/作为服务调用的基础路径。
内容的提问来源于stack exchange,提问作者vinit saha
相关产品推荐
相关产品推荐

