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

FastAPI如何通过response_model过滤第三方接口返回的响应字段?

实现方案

你只需要调整Pydantic模型和路由的response_model定义即可,全程无需手动遍历处理数据,FastAPI会自动完成字段过滤:

1. 定义正确的响应结构模型

你的返回结构是外层包裹data字段的数组结构,不能直接用单条Project作为响应模型,需要新增一层外层响应模型:

from pydantic import BaseModel
from typing import List

class Project(BaseModel):
    name: str
    description: str

# 新增外层响应模型,匹配你要返回的结构
class ProjectListResponse(BaseModel):
    data: List[Project]
    
    # 显式声明忽略模型中未定义的字段,避免原始响应的额外字段引发报错
    # Pydantic v2 写法:
    model_config = {"extra": "ignore"}
    
    # 如果用的是Pydantic v1,替换为下面的内部类:
    # class Config:
    #     extra = "ignore"

2. 修改路由的response_model参数

将路由的response_model指定为你刚定义的外层ProjectListResponse即可,原有接口请求逻辑不需要做任何修改:

@app.get("/projects", response_model=ProjectListResponse)
async def get_projects():
    projects = RequestsApi(base_url, headers=headers)
    response = projects.get("/api/projects")
    return response.json()

效果说明

配置完成后FastAPI会自动完成以下处理:

  • 自动丢弃原始响应外层的warnings字段
  • 自动遍历data数组内的所有项目对象,只保留name和description两个字段
  • 最终返回的结构和你要求的目标结构完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:45:05