Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Berkesan Mengendalikan Permintaan POST dengan Data JSON dalam FastAPI?

Bagaimana Berkesan Mengendalikan Permintaan POST dengan Data JSON dalam FastAPI?

DDD
DDDasal
2024-12-29 01:22:09834semak imbas

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

FastAPI: Mengendalikan Permintaan POST dengan Data JSON

Apabila membina API, adalah penting untuk mengendalikan pelbagai jenis permintaan HTTP. Walaupun permintaan GET berfungsi dengan lancar, permintaan POST sering menghadapi ralat, terutamanya apabila menghantar data JSON. Untuk menyelesaikan masalah ralat "422 Entiti Tidak Boleh Diproses" yang biasa dihadapi dengan permintaan POST dalam FastAPI, kami meneroka pendekatan berbeza untuk menentukan titik akhir yang menjangkakan data JSON.

Pendekatan 1: Menggunakan Model Pydantic

Untuk menentukan badan permintaan yang menerima data JSON, anda boleh menggunakan Pydantic model. Cipta model dengan medan yang anda inginkan dan masukkannya ke dalam definisi titik akhir anda.

from pydantic import BaseModel

class User(BaseModel):
    user: str

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

Pendekatan 2: Parameter Badan dengan Benam

Jika anda memilih untuk tidak menggunakan Pydantic model, anda boleh menggunakan Parameter badan dengan pilihan benam. Ini membolehkan anda mengakses secara langsung badan permintaan sebagai medan dalam fungsi anda.

from fastapi import Body

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

Pendekatan 3: Parameter Dict (Kurang Disyorkan)

Pendekatan yang kurang disyorkan melibatkan penggunaan jenis kamus sebagai parameter. Walau bagaimanapun, kaedah ini tidak menyediakan pengesahan tersuai untuk atribut dan mengehadkan fleksibiliti.

from typing import Dict, Any

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

Pendekatan 4: Menggunakan Objek Permintaan FastAPI

Jika anda yakin tentang data JSON yang masuk, anda boleh mengaksesnya secara terus menggunakan objek FastAPI Request. Ingat bahawa pendekatan ini memerlukan penentuan titik akhir anda dengan async def.

from fastapi import Request

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

Menguji Kod Anda

Untuk menguji titik akhir anda, anda boleh menggunakan sama ada pustaka permintaan Python atau API Ambil JavaScript.

Menggunakan Python permintaan:

import requests

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

Menggunakan 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);
    });

Dengan memilih pendekatan yang sesuai berdasarkan keperluan khusus anda dan mempertimbangkan pelbagai pilihan ujian , anda boleh mengendalikan permintaan POST dengan data JSON dalam FastAPI dengan berkesan.

Atas ialah kandungan terperinci Bagaimana Berkesan Mengendalikan Permintaan POST dengan Data JSON dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn