FastAPI如何将所有接口参数纳入JSON请求体?
FastAPI 统一将所有参数放入JSON请求体的解决方案
不用给每个str类型参数单独创建类,只需要把所有请求参数整合到一个Pydantic模型里即可,具体操作如下:
1. 定义包含所有参数的Pydantic模型
把你原来的字符串字段(site_name、locale等)和已定义好的OriginList、DestinationList等类型的字段,全部放到一个新的Pydantic模型中,可选字段设置默认值None:
from pydantic import BaseModel from typing import Union, Optional # 假设你已经提前定义了OriginList、DestinationList、FilterList类 class ContentRelevancyRequest(BaseModel): site_name: str locale: str lob: str page_type: str origins: Optional[OriginList] = None destinations: Optional[DestinationList] = None optimisation_opportunity: Union[str, None] = None filter: Optional[FilterList] = None
2. 修改接口函数接收模型参数
将原来接口的多个参数替换成这个新模型的实例,FastAPI会自动把请求的JSON体解析为模型对象:
@router.post(path='/content-relevancy-interface/submit') def content_relevancy_get_records(request: ContentRelevancyRequest): # 访问参数示例:request.site_name、request.origins # 这里编写你的业务逻辑 return {"status": "success", "request_params": request.dict()}
这样处理后,所有参数都会被作为JSON请求体的一部分接收,既复用了你已有的自定义类,又不用单独为每个字符串字段创建新类,同时还能利用Pydantic的自动数据校验和接口文档生成能力。
内容的提问来源于stack exchange,提问作者Akshay Hazari
相关产品推荐
相关产品推荐

