>백엔드 개발 >파이썬 튜토리얼 >FastAPI에서 JSON 데이터로 POST 요청을 효과적으로 처리하는 방법은 무엇입니까?

FastAPI에서 JSON 데이터로 POST 요청을 효과적으로 처리하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-29 01:22:09827검색

How to Effectively Handle POST Requests with JSON Data in FastAPI?

FastAPI: JSON 데이터로 POST 요청 처리

API를 구축할 때 다양한 유형의 HTTP 요청을 처리하는 것이 중요합니다. GET 요청은 원활하게 작동하지만 POST 요청은 특히 JSON 데이터를 보낼 때 오류가 자주 발생합니다. FastAPI의 POST 요청에서 흔히 발생하는 "422 Unprocessable Entity" 오류를 해결하기 위해 JSON 데이터가 필요한 엔드포인트를 정의하는 다양한 접근 방식을 살펴봅니다.

접근 방식 1: Pydantic 모델 사용

JSON 데이터를 허용하는 요청 본문을 정의하려면 Pydantic 모델을 활용할 수 있습니다. 원하는 필드로 모델을 생성하고 이를 엔드포인트 정의에 통합합니다.

from pydantic import BaseModel

class User(BaseModel):
    user: str

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

접근 방법 2: Embed를 사용한 신체 매개변수

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: FastAPI 요청 객체 사용

들어오는 JSON 데이터에 FastAPI 요청 개체를 사용하여 직접 액세스할 수 있습니다. 이 접근 방식을 사용하려면 비동기 정의로 엔드포인트를 정의해야 한다는 점을 기억하세요.

from fastapi import Request

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

코드 테스트

엔드포인트를 테스트하려면 Python 요청 라이브러리 또는 JavaScript Fetch API.

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()) // or, resp.text(), etc
    .then(data => {
        console.log(data); // handle response data
    })
    .catch(error => {
        console.error(error);
    });

특정 요구 사항에 따라 적절한 접근 방식을 선택하고 다양한 테스트 옵션을 고려합니다. , FastAPI에서 JSON 데이터로 POST 요청을 효과적으로 처리할 수 있습니다.

위 내용은 FastAPI에서 JSON 데이터로 POST 요청을 효과적으로 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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