Cara Menyelesaikan Ralat 422 FastAPI Semasa Menghantar Data JSON melalui Permintaan POST
Ralat 422 Entiti Tidak Dapat Diproses biasanya berlaku apabila muatan permintaan secara sintaksis adalah betul, tetapi ia tidak sepadan dengan jangkaan pelayan. Dalam kes khusus ini, anda menghadapi ralat ini kerana permintaan anda cuba menghantar data JSON ke titik akhir yang menjangkakan menerima data sebagai parameter pertanyaan.
Untuk menyelesaikan isu ini, terdapat berbilang pendekatan tersedia:
Pilihan 1: Gunakan Pydantic Model
from pydantic import BaseModel class User(BaseModel): user: str @app.post('/') def main(user: User): return user
Pilihan 2: Gunakan Parameter Badan
from fastapi import Body @app.post('/') def main(user: str = Body(..., embed=True)): return {'user': user}
Pilihan 3: Gunakan Jenis Dict
from typing import Dict, Any @app.post('/') def main(payload: Dict[Any, Any]): return payload
Pilihan 4: Mengakses Terus Badan Permintaan
from fastapi import Request @app.post('/') async def main(request: Request): return await request.json()
Menguji Pilihan
Menggunakan Perpustakaan 'permintaan' Python:
import requests url = 'http://127.0.0.1:8000/' payload = {'user': 'foo'} resp = requests.post(url=url, json=payload) print(resp.json())
Menggunakan API Ambil JavaScript:
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); });
Dengan memilih dan melaksanakan salah satu pendekatan ini, anda boleh berjaya mengendalikan data JSON dalam titik akhir FastAPI anda, menyelesaikan ralat 422.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 422 FastAPI Semasa Menyiarkan Data JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!