Pengenalan
Apabila cuba memindahkan data JSON daripada bahagian hadapan JavaScript ke bahagian belakang FastAPI menggunakan permintaan POST, anda mungkin menghadapi mesej ralat seperti "422 Entiti Tidak Boleh Diproses." Artikel ini meneroka sebab ini berlaku dan menyediakan penyelesaian untuk menyelesaikan isu tersebut.
Analisis Ralat
Ralat menunjukkan bahawa titik akhir FastAPI bahagian belakang anda menjangkakan parameter pertanyaan, bukan Badan JSON. Secara lalai, parameter bukan laluan dalam titik akhir FastAPI ditafsirkan sebagai parameter pertanyaan.
Penyelesaian
Terdapat pelbagai kaedah untuk menangani isu ini dan mendayakan penyiaran data JSON :
Buat model Pydantic untuk mewakili data JSON, contohnya:
from pydantic import BaseModel class Item(BaseModel): eth_addr: str
Dalam pengendali titik akhir anda:
@app.post('/ethAddress') def add_eth_addr(item: Item): return item
Ini memerlukan badan JSON dalam format berikut:
{ "eth_addr": "some addr" }
Dalam permintaan pengambilan JavaScript anda:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body()): return {'eth_addr': eth_addr}
Ini membenarkan penyiaran terus data JSON sebagai rentetan:
"some addr"
Dalam JavaScript:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify("some addr"), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body(embed=True)): return {'eth_addr': eth_addr}
Ini menjangkakan badan JSON dalam format yang sama seperti Pilihan 2:
{ "eth_addr": "some addr" }
Dalam JavaScript:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
Kesimpulan
Dengan mengikuti penyelesaian ini, anda boleh berjaya menyiarkan data JSON dari bahagian hadapan JavaScript anda ke titik akhir FastAPI anda. Ingat untuk memilih pendekatan yang paling sesuai dengan keperluan khusus anda.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat '422 Entiti Tidak Dapat Diproses' Semasa Menghantar Data JSON daripada JavaScript ke FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!