Apabila membangunkan aplikasi FastAPI, adalah penting untuk memahami nuansa mengembalikan data berformat JSON. Ini memerlukan menyelidiki kerja dalaman FastAPI dan memahami peranan yang dimainkan oleh pensirilan JSON.
Di tengah-tengah isu terletak penggunaan json.dumps() untuk menyerikan objek sebelum mengembalikannya. Walaupun pendekatan ini mungkin kelihatan logik, ia memperkenalkan siri berlebihan kerana FastAPI secara automatik JSON-mengekodkan nilai pulangan semasa penjanaan respons. Ini membawa kepada perwakilan rentetan yang kelihatan tidak betul bagi data JSON dan bukannya dict yang diformat dengan kemas.
Untuk membetulkan perkara ini, anda mesti membenarkan FastAPI mengendalikan proses siri JSON. Ini boleh dicapai dengan mengembalikan objek data (dikt, senarai, dll.) secara langsung. FastAPI akan menukarnya dengan lancar kepada data serasi JSON menggunakan jsonable_encoder dan membungkusnya dalam JSONResponse. Respons yang terhasil akan mengandungi data yang dikodkan aplikasi/json, memastikan format JSON yang dikehendaki.
Kembalikan objek data seperti yang anda jangkakan :
@app.get('/') async def main(): return d
Di sebalik tabir, FastAPI akan bersiri dict (d) menggunakan JSONResponse dan mengekodkannya dengan json.dumps().
Jika anda memerlukan kawalan tepat ke atas respons, gunakan objek Respons secara terus:
@app.get('/') async def main(): return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')
Pendekatan ini memberi anda kebebasan ke atas jenis_media (cth., 'application/json'), menyediakan kebolehubahsuaian.
Nota: Argumen lalai untuk json.dumps() (str) membenarkan penyirian objek datetime. Dengan menghantar inden, anda boleh mengawal pemformatan output JSON.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Data Berformat JSON dengan Cekap dalam Aplikasi FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!