You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI接口无法正确接收Postman Raw JSON请求问题排查

问题原因分析

你的接口参数定义和请求方式不匹配,导致JSON Body传递的参数未被正确接收:

  • 当前接口里的company_name是查询参数(Query Parameter),FastAPI默认会从URL的Params中读取这个值,而非JSON请求体。
  • 当你用Raw JSON Body传{"parameter":{"company_name":"panda"}}时,接口没有定义对应的解析规则去读取这个嵌套结构的请求体,所以company_name始终是默认值None。最终CRUD函数执行的是Audit.company_name == None的查询,自然只返回company_name为null的数据。
解决方案

根据你的请求结构需求,提供两种可选方案:

方案1:支持嵌套结构的JSON请求体

先定义Pydantic模型来匹配你的JSON结构,再修改接口解析请求体:

# 导入Pydantic模型基类
from pydantic import BaseModel

# 定义嵌套的请求体结构
class Parameter(BaseModel):
    company_name: str | None = None

class FilterRequest(BaseModel):
    parameter: Parameter

# 修改接口函数
@router.post("/filter/filtering")
async def filter_test(
    skip: int = 0, 
    limit: int = 100, 
    req_body: FilterRequest | None = None,  # 接收JSON请求体
    db: Session = Depends(get_db)
):
    # 从嵌套结构中提取company_name
    company_name = req_body.parameter.company_name if req_body else None
    _audits = crud.filter_test(db, company_name)
    return Response(status="Ok", code="200", message="Success fetch all data", result=_audits)

方案2:支持平级JSON请求体(简化结构)

如果可以简化请求JSON为{"company_name":"panda"},直接用Body标记参数为请求体参数即可:

from fastapi import Body

@router.post("/filter/filtering")
async def filter_test(
    skip: int = 0, 
    limit: int = 100, 
    company_name: str | None = Body(None),  # 指定从请求体读取参数
    db: Session = Depends(get_db)
):
    _audits = crud.filter_test(db, company_name)
    return Response(status="Ok", code="200", message="Success fetch all data", result=_audits)

额外优化建议

  1. 恢复CRUD函数里的if company_name:判断,这样当参数为空时返回所有数据,而非仅company_name为null的数据:
def filter_test(db: Session, company_name: str = None):
    query = db.query(Audit)
    if company_name:
        query = query.filter(Audit.company_name == company_name)
    # 顺便用上接口定义的skip和limit参数,实现分页
    return query.offset(skip).limit(limit).all()
  1. 如果需要同时支持URL Params和JSON Body传递参数,可以在接口中同时接收两种来源的参数,再做优先级判断(比如优先取请求体参数)。

内容的提问来源于stack exchange,提问作者hanbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:50:38