FastAPI无法接收Axios发送的字符串数组,报422错误求助
问题原因及解决办法
核心错误点
- 字段名不匹配:后端Pydantic模型
Item要求接收包含dates字段的对象,但你前端发送的是带mydate字段的对象,两者字段名不对应。 - 多余的JSON序列化:你用
JSON.stringify()把数组转成了字符串,导致后端收到的是字符串类型,而非模型要求的List[str]数组类型。
前端代码修改方案
调整数据生成和请求体结构:
// 去掉JSON.stringify,直接保留数组格式 let mydate = rowData.map(x => x.Date); const savePlan = async () => { try { console.log(mydate); // 把请求体的字段名改为dates,值直接传数组 const response = await axios.post('/saveplan', { dates: mydate }, { headers: { 'Content-Type': 'application/json' } }); console.log("data saved successfully!", response.data); } catch (error) { console.error('Error saving data', error); } };
验证逻辑
修改后前端发送的请求体结构为:
{ "dates": ["2023-06","2023-07","2023-08",...] }
该结构完全匹配后端Item模型的要求,FastAPI能正确解析数据,不会再返回422错误。
内容的提问来源于stack exchange,提问作者logisticregress
相关产品推荐
相关产品推荐

