Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Berkesan Mengendalikan Permintaan POST dengan Data JSON dalam 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!