【问题标题】:How to hide input param in FastApi?如何在 FastApi 中隐藏输入参数?
【发布时间】:2021-02-26 14:29:58
【问题描述】:
如何在 OpenApi 中隐藏请求参数?我想从 OpenApi UI 中隐藏 user_agent。
我有一个简单的应用程序:
from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
user_agent: Optional[str] = Header(None),
size: Optional[int] = Body(None)):
return {"User-Agent": user_agent}
【问题讨论】:
标签:
python
python-3.x
fastapi
【解决方案2】:
您可以customize OpenAPI 模式来隐藏任意参数。下面的例子隐藏paramB:
from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
app = FastAPI()
@app.get("/")
def get_items(paramA: int, paramB: int):
pass
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title="Custom title",
version="2.5.0",
description="This is a very custom OpenAPI schema",
routes=app.routes,
)
# Remove paramB
params = openapi_schema["paths"]["/"]["get"]["parameters"]
params = [param for param in params if param["name"] != "paramB"]
openapi_schema["paths"]["/"]["get"]["parameters"] = params
app.openapi_schema = openapi_schema
return app.openapi_schema
app.openapi = custom_openapi