On getting the 422 Unprocessable Entity error.
Similar error : Python: FastAPI error 422 with POST request when sending JSON data
POST request code in 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);
});
Python code in 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)
# data= {"item" : out }
# data=json.dumps(data)
# data = data.encode("utf-8")
# return data;
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
# data= {"item" : data}
# data=json.dumps(data)
# data = data.encode("utf-8")
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
I tried console.log(response) and it is not showing the response.