发送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测试详情:

- JSON返回结果:

我尝试用console.log(response)打印响应内容,但无法正常显示,请求帮忙排查并解决这个422错误。
内容的提问来源于stack exchange,提问作者sneha k
相关产品推荐
相关产品推荐

