Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya mengendalikan berbilang titik akhir API dengan laluan berbeza tetapi parameter laluan yang sama dalam FastAPI?
Berbilang Titik Akhir API dengan Laluan Berbeza tetapi Parameter Laluan Sama dalam FastAPI
Dalam FastAPI, mentakrifkan titik akhir API dengan laluan berbeza tetapi parameter laluan yang sama boleh dicapai dengan mengisytiharkan titik akhir mengikut urutan. Walau bagaimanapun, isu biasa timbul apabila titik akhir pertama yang diisytiharkan dalam penghala dipanggil dan bukannya titik akhir yang dimaksudkan apabila titik akhir lain dengan parameter laluan kongsi dicetuskan.
Isu ini berlaku kerana FastAPI menilai titik akhir mengikut susunan ia muncul. dalam penghala. Akibatnya, jika titik akhir dengan parameter laluan kongsi (/project/{project_id}/...) ditakrifkan dahulu, ia akan dinilai terlebih dahulu dan mengendalikan semua permintaan ke laluan itu, tanpa mengira parameter laluan tambahan.
Penyelesaian:
Untuk menyelesaikan isu ini, pastikan titik akhir dengan parameter laluan berbeza diisytiharkan sebelum titik akhir dengan parameter laluan kongsi. Ini memastikan bahawa titik akhir yang betul dicetuskan berdasarkan laluan khusus yang disediakan.
Sebagai contoh, pertimbangkan penghala yang disemak berikut:
<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>
Dalam penghala yang dikemas kini ini, titik akhir dengan laluan unik parameter (/project/details/{project_id} dan /project/metadata/{project_id}) diisytiharkan dahulu. Akibatnya, apabila titik akhir ini dicetuskan, kaedah pengawal yang sepadan akan dilaksanakan dengan betul dan isu pelaksanaan pengawal yang tidak sepadan diselesaikan.
Atas ialah kandungan terperinci Bagaimanakah saya mengendalikan berbilang titik akhir API dengan laluan berbeza tetapi parameter laluan yang sama dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!