소개
JavaScript 프런트엔드에서 FastAPI로 JSON 데이터를 전송하려고 할 때 POST 요청을 사용하는 FastAPI 백엔드를 사용하는 경우 "422 처리할 수 없는 엔터티"와 같은 오류 메시지가 나타날 수 있습니다. 이 문서에서는 이러한 현상이 발생하는 이유를 살펴보고 문제 해결을 위한 솔루션을 제공합니다.
오류 분석
이 오류는 백엔드 FastAPI 엔드포인트에 쿼리 매개변수가 아닌 쿼리 매개변수가 필요함을 나타냅니다. JSON 본문. 기본적으로 FastAPI 엔드포인트의 경로가 아닌 매개변수는 쿼리 매개변수로 해석됩니다.
해결책
이 문제를 해결하고 JSON 데이터 게시를 활성화하는 방법은 여러 가지가 있습니다. :
표현할 Pydantic 모델 생성 예를 들어 JSON 데이터는 다음과 같습니다.
from pydantic import BaseModel class Item(BaseModel): eth_addr: str
엔드포인트 핸들러에서:
@app.post('/ethAddress') def add_eth_addr(item: Item): return item
이를 위해서는 JSON 본문이 다음 형식이어야 합니다.
{ "eth_addr": "some addr" }
JavaScript 가져오기 요청에서:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body()): return {'eth_addr': eth_addr}
이렇게 하면 JSON 데이터를 문자열로 직접 게시할 수 있습니다.
"some addr"
JavaScript에서:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify("some addr"), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body(embed=True)): return {'eth_addr': eth_addr}
이것은 JSON 본문이 옵션 2와 동일한 형식:
{ "eth_addr": "some addr" }
JavaScript에서:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
결론
이 솔루션을 따르면 JSON을 성공적으로 게시할 수 있습니다. JavaScript 프런트엔드에서 FastAPI 엔드포인트로의 데이터. 특정 요구 사항에 가장 적합한 접근 방식을 선택하는 것을 잊지 마세요.
위 내용은 JavaScript에서 FastAPI로 JSON 데이터를 보낼 때 '422 처리할 수 없는 엔터티' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!