Dalam FastAPI, parameter yang diisytiharkan dalam fungsi tanpa menjadi sebahagian daripada parameter laluan secara automatik ditafsirkan sebagai pertanyaan parameter. Tafsiran ini berbeza daripada amalan biasa menghantar data JSON dalam badan permintaan.
Untuk menangani percanggahan ini, terdapat beberapa pilihan:
Buat Pydantic model untuk mentakrifkan badan JSON yang dijangkakan:
from pydantic import BaseModel class Item(BaseModel): eth_addr: str @app.post("/ethAddress") def add_eth_addr(item: Item): return item
JavaScript Ambil API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),
Gunakan Badan= dengan jenis:
from fastapi import Body @app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body()): return {"eth_addr": eth_addr}
API Ambil JavaScript:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify("some addr"),
Ringkaskan parameter badan sahaja menggunakan embed=True:
@app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body(embed=True)): return {"eth_addr": eth_addr}
JavaScript Fetch API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),
Untuk butiran tambahan dan contoh dengan JavaScript, rujuk kepada:
Ingat, menggunakan parameter pertanyaan bukanlah pendekatan biasa untuk data badan JSON dalam API web. Laraskan kod anda dengan sewajarnya untuk memadankan pilihan ini.
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Data JSON dari Front-End JavaScript ke Back-End FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!