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

发送JSON数据时FastAPI POST请求出现422错误求助

FastAPI POST请求出现422 Unprocessable Entity错误排查

我用FastAPI搭建后端服务时,前端通过Axios发送POST请求传递JSON数据,遇到了422 Unprocessable Entity错误。

前端请求代码(Prescribe.js)

let res = await axios.post('http://127.0.0.1:8000/data', json).then(res => (console.log(res)))
console.log(res + "hello");
console.log(res.data);
let result1 = res.data;
console.log(JSON.stringify(eval("(" + result1 + ")")));
result1 = JSON.stringify(eval("(" + result1 + ")"));
var obj = JSON.parse(result1);
console.log(typeof (obj.item));
Object.entries(obj.item).forEach(([key, value]) => {
    console.log('response:', value);
});

后端FastAPI代码(main.py)

from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import HTMLResponse
from pydantic import BaseModel, Field
from fastapi import FastAPI, Query, Path,Request, Form
from ner_model import check_name_entity_recognition, POS,check_name_entity_recognition_pdf
import requests
url = 'http://127.0.0.1:8000'
import json 
from app import *

app = FastAPI()

origins = [
    "http://localhost:3000",
]


app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"]
)   


class Payload(BaseModel):
    data: str = ""


@app.post('/pdf')
async def createPdf(payload: Payload = None):

    print(payload.data)
    pred = await check_name_entity_recognition_pdf(payload.data)
    print(pred)
      
    sent=payload.data
    wordsList=sent.split()
    predsList = [j for sub in pred for j in sub]
    print(predsList )
    words=[]
    preds=[]

    for i in range(len(predsList)):
        if(predsList[i]!="O"):
            preds.append(predsList[i])
            words.append(wordsList[i])      
    start=0
    inputs=[]
    predictions=[]
    for current in range(len(words)):
        if(preds[current][0]=="B"):
            predictions.append(preds[current])
            inputs.append(" ".join(words[start:current]))
            start=current

    inputs.append(" ".join(words[start:]))
    inputs=inputs[1:]
    tempCounts={"B-DRUG":0,"B-STR":0,"B-FOR":0,"B-ROU":0,"B-DOS":0,"B-FRE":0,"B-DUR":0}
    for i in predictions:
        tempCounts[i]+=1
        totalDrug=max(tempCounts.values())
    data=[]
    for i in range(totalDrug):
        data.append({"B-DRUG":"NA","B-STR":"NA","B-FOR":"NA","B-ROU":"NA","B-DOS":"NA","B-FRE":"NA","B-DUR":"NA"})
    counts={"B-DRUG":0,"B-STR":0,"B-FOR":0,"B-ROU":0,"B-DOS":0,"B-FRE":0,"B-DUR":0}
    for i in range(len(predictions)):
        temp=counts[predictions[i]]
        data[temp][predictions[i]]=inputs[i]
        counts[predictions[i]]+=1
    return data


@app.post('/data')
async def main(payload: Payload = None):
    print(payload)
    out = await check_name_entity_recognition(payload.data)
    data= {"item" : out }
    data=json.dumps(data)
    data = data.encode("utf-8")
    print("->  ", payload)
    return data

相关截图

  • 开发者工具错误信息:开发者工具错误
  • 请求头与API测试详情:请求头与API测试
  • JSON返回结果:JSON结果

我尝试用console.log(response)打印响应内容,但无法正常显示,请求帮忙排查并解决这个422错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:59