仅在FastAPI Swagger UI设置默认limit值,不影响编程调用
解决方案
要实现Swagger UI默认填充limit=100,同时让编程调用(如requests)默认不限制返回数量,你可以通过给OpenAPI schema指定默认值,同时保持函数参数的默认值为None来实现。具体步骤如下:
- 将
limit参数的函数默认值设为None,确保编程调用时不传该参数则不限制结果数量。 - 通过
Query的schema参数给OpenAPI文档添加default: 100,让Swagger UI自动填充这个值到输入框中。
修改后的代码示例:
from typing import Optional, List from fastapi import Query, Depends, APIRouter from sqlalchemy.orm import Session # 假设你已定义了SomeSchema、SomeModel和get_db @router.get("/some_endpoint", response_model=List[SomeSchema]) def read_some_endpoint( name: str, limit: Optional[int] = Query( None, description="Limit the number of results to return", schema={"default": 100} # 仅在Swagger UI中生效的默认值 ), db: Session = Depends(get_db), ): """ Query database """ query = db.query(SomeModel).filter(SomeModel.name == name) if limit: query = query.limit(limit) results = query.all() return results
效果说明
- Swagger UI体验:点击「Try it out」时,
limit输入框会自动填充100,用户可以直接执行请求,也可以修改这个值。 - 编程调用体验:使用requests等工具调用时,如果不传
limit参数,后端会收到limit=None,此时会返回符合条件的所有结果;若需要限制数量,手动传入limit参数即可。
内容的提问来源于stack exchange,提问作者Anup Jonchhe
相关产品推荐
相关产品推荐

