Axios PUT请求出现422 Unprocessable Entity错误排查求助
问题原因及解决办法
核心问题
422错误的本质是请求参数传递方式和后端定义不匹配:
- 前端通过Axios把
gardenSize放在请求体里发送 - 后端定义的
gardenSize: str会被FastAPI默认识别为URL查询参数(即?gardenSize=xxx形式),而非请求体参数,导致无法解析参数,触发422错误
解决方法(二选一)
方法1:修改后端,接收请求体参数
用FastAPI的语法明确指定参数来自请求体,两种常用方式:
方式1.1 使用Pydantic模型(推荐,适配多参数场景)
from pydantic import BaseModel from fastapi import Request, status class GardenSizeRequest(BaseModel): gardenSize: str @app.put("/api/updategardensize", status_code=status.HTTP_200_OK) async def updatefeaturegarden(request: Request, req: GardenSizeRequest): # 通过req.gardenSize获取参数 print(req.gardenSize) return {"status": "success"}
方式1.2 使用Body装饰器(适合单个参数场景)
from fastapi import Request, status, Body @app.put("/api/updategardensize", status_code=status.HTTP_200_OK) async def updatefeaturegarden(request: Request, gardenSize: str = Body(...)): # 直接使用gardenSize参数 print(gardenSize) return {"status": "success"}
方法2:修改前端,传递查询参数
如果不想改动后端,把参数放在URL的查询字符串中:
await axios.put('/api/updategardensize', {}, { withCredentials: true, params: { gardenSize: 'haha' } // 自动拼接为URL后缀?gardenSize=haha })
额外排查点
- 确认前后端请求路径完全一致(注意大小写、末尾斜杠差异)
- Axios默认会发送
application/json请求头,FastAPI可自动解析,无需额外配置
内容的提问来源于stack exchange,提问作者C A OB1
相关产品推荐
相关产品推荐

