FastAPI文档无法显示HTTP/HTTPS协议选择,该如何解决?
解决方案
问题根源是OpenAPI 3.x版本已废弃schemes字段,改用servers字段来定义不同协议/环境的服务地址。你需要修改自定义OpenAPI配置,添加servers数组来指定不同协议的完整服务端点:
from fastapi.openapi.utils import get_openapi def custom_openapi(): if app.openapi_schema: return app.openapi_schema openapi_schema = get_openapi( title="My FastAPI App", version="1.0.0", description="This is a FastAPI app that supports HTTP and HTTPS", routes=app.routes, ) # 定义HTTP和HTTPS服务端点,替换原有的schemes配置 openapi_schema["servers"] = [ {"url": "http://localhost:8000", "description": "HTTP开发环境"}, {"url": "https://your-production-domain.com", "description": "HTTPS生产环境"} ] app.openapi_schema = openapi_schema return app.openapi_schema app.openapi = custom_openapi
关键说明:
servers数组中的每个对象必须包含url(完整服务地址,包含协议、域名/IP、端口),可选添加description用于说明该服务的用途- 配置完成后,FastAPI默认的SwaggerUI文档左上角会自动出现下拉列表,展示你定义的所有服务选项(包含不同协议的地址)
- CORS配置仅用于控制跨域请求权限,和文档中的协议选择功能无关,之前的CORS配置可以保留但无需修改
内容的提问来源于stack exchange,提问作者Om Soni
相关产品推荐
相关产品推荐

