Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah titik akhir FastAPI saya dipanggil apabila titik akhir yang berbeza dengan parameter laluan yang sama ditakrifkan kemudian?
Berbilang Titik Akhir API dengan Parameter Laluan Sama
Apabila mereka bentuk API RESTful menggunakan FastAPI, anda boleh mentakrifkan berbilang titik akhir dengan laluan berbeza tetapi berkongsi parameter laluan. Walau bagaimanapun, dalam kes di mana pelaksanaan titik akhir menjadi tidak konsisten, adalah penting untuk menangani isu konfigurasi yang berpotensi.
Pertimbangkan fail penghala berikut dalam FastAPI:
<code class="python"># GET API Endpoint 1 @router.get("/project/{project_id}/{employee_id}") async def method_one( project_id: str, organization_id: str, session: AsyncSession = Depends(get_db) ): # Controller method execution # GET API Endpoint 2 @router.get("/project/details/{project_id}") async def method_two( project_id: str, session: AsyncSession = Depends(get_db) ): # Controller method execution # GET API Endpoint 3 @router.get("/project/metadata/{project_id}") async def method_three( project_id: str, session: AsyncSession = Depends(get_db) ): # Controller method execution</code>
Apabila menggunakan titik akhir API 2 dan 3, secara tidak dijangka , pengawal method_one dilaksanakan bukannya method_two dan method_three yang dijangkakan. Anomali ini memerlukan pemeriksaan yang teliti terhadap konfigurasi.
FastAPI menilai titik akhir dalam urutan yang ditentukan. Oleh itu, projek/{project_id}/{employee_id} akan dinilai terlebih dahulu. Selepas itu, sebarang permintaan kepada titik akhir 2 dan 3 akan mencetuskan titik akhir 1.
Penyelesaian:
Untuk menyelesaikan isu ini, susun semula definisi titik akhir dalam fail penghala, memastikan bahawa titik akhir 2 dan 3 ditakrifkan sebelum titik tamat 1:
<code class="python"># GET API Endpoint 2 @router.get("/project/details/{project_id}") # ... # GET API Endpoint 3 @router.get("/project/metadata/{project_id}") # ... # GET API Endpoint 1 @router.get("/project/{project_id}/{employee_id}") # ...</code>
Dengan menyusun semula titik tamat, kaedah pengawal yang sesuai akan dilaksanakan selepas penyerahan titik akhir API.
Atas ialah kandungan terperinci Mengapakah titik akhir FastAPI saya dipanggil apabila titik akhir yang berbeza dengan parameter laluan yang sama ditakrifkan kemudian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!