>백엔드 개발 >파이썬 튜토리얼 >JSON 데이터를 게시할 때 FastAPI의 422 오류를 수정하는 방법은 무엇입니까?

JSON 데이터를 게시할 때 FastAPI의 422 오류를 수정하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 01:24:24647검색

How to Fix FastAPI's 422 Error When POSTing JSON Data?

POST 요청을 통해 JSON 데이터를 보낼 때 FastAPI의 422 오류를 해결하는 방법

422 Unprocessable Entity 오류는 일반적으로 요청의 페이로드가 구문상일 때 발생합니다. 정확하지만 서버의 기대와 일치하지 않습니다. 이 특정 사례에서는 요청이 데이터를 쿼리 매개변수로 수신할 것으로 예상하는 엔드포인트에 JSON 데이터를 보내려고 하기 때문에 이 오류가 발생합니다.

이 문제를 해결하려면 다양한 접근 방식 사용 가능:

옵션 1: Pydantic 활용 모델

    Pydantic 모델을 사용하면 엔드포인트에 대해 예상되는 데이터 구조를 지정할 수 있습니다. 아래 코드 조각은 Pydantic 모델로 표현된 JSON 데이터를 허용하는 엔드포인트를 정의하는 방법을 보여줍니다.
from pydantic import BaseModel

class User(BaseModel):
    user: str

@app.post('/')
def main(user: User):
    return user

옵션 2: 본문 매개변수 사용

    Pydantic 모델을 원하지 않는 경우 신체 매개변수를 활용할 수 있습니다. 'Body' 매개변수 삽입을 사용하면 요청 본문을 함수 서명의 일부로 삽입할 수 있습니다.
from fastapi import Body

@app.post('/')
def main(user: str = Body(..., embed=True)):
    return {'user': user}

옵션 3: 사전 유형 활용

    또 다른 방법은 덜 권장되지만 Dict 유형을 사용하여 키-값 쌍을 정의하는 것입니다. 그러나 이 기술은 사용자 정의 유효성 검사를 지원하지 않습니다.
from typing import Dict, Any

@app.post('/')
def main(payload: Dict[Any, Any]):
    return payload

옵션 4: 요청 본문에 직접 액세스

    Starlette의 요청 개체는 직접 확인을 허용합니다. wait request.json()을 사용하여 구문 분석된 JSON 요청 본문에 액세스합니다. 그러나 이 접근 방식은 사용자 지정 유효성 검사를 제공하지 않으며 끝점 정의에 async def를 사용해야 합니다.
from fastapi import Request

@app.post('/')
async def main(request: Request):
    return await request.json()

옵션 테스트

Python '요청' 사용 라이브러리:

import requests

url = 'http://127.0.0.1:8000/'
payload = {'user': 'foo'}
resp = requests.post(url=url, json=payload)
print(resp.json())

JavaScript의 Fetch API 사용:

fetch('/', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({'user': 'foo'})
}).then(resp => resp.json())
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error(error);
    });
이러한 접근 방식 중 하나를 선택하고 구현하면 다음에서 JSON 데이터를 성공적으로 처리할 수 있습니다. FastAPI 엔드포인트를 사용하여 422 오류를 해결하세요.

위 내용은 JSON 데이터를 게시할 때 FastAPI의 422 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.