In Fastapi deklarieren Sie mehrere API -Endpunkte mit verschiedenen Pfaden, aber derselbe Pfad kann zu unerwarteten Routenpassungsverhalten führen. API -Endpunkt 1 @router.get ("/project/{project_id}/{Employee_id}") Async def method_one (project_id: str, Mitarbeiter_ID: str, ...): # ... # API -Endpunkt 2 Holen Sie sich @router.get ("/project/details/{project_id}") Async def method_two (project_id: str, ...): # ... # API -Endpunkt 3 Holen Sie sich 3 @router.get ("/project/metadata/{project_id}") Async def method_three (project_id: str, ...): # ...
In diesem Szenario werden die in Endpoint 1 definierten Controller -Methode, nämlich method_one (), die in Endpoint 1 definierte Controller -Methode ausführen. Dies ist darauf zurückzuführen, wie Fastapi Endpunkte in Sequenz bewertet.
# GET API Endpoint 1
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):
# ...
# GET API Endpoint 2
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):
# ...
# GET API Endpoint 3
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):
# ...
Um sicherzustellen, dass die ordnungsgemäße Route -Übereinstimmung sichergestellt wird, müssen Sie Endpunkte in der Reihenfolge ihrer Pfadspezifität deklarieren. Da Endpunkte nacheinander ausgewertet werden, sollten Endpunkte mit spezifischeren Pfaden zuerst deklariert werden. im obigen Beispiel ist der Endpunkt für/project/{project_id}/{Employee_id} spezifischer als der Endpunkt für/project/detail/{project_id}. Daher lautet die richtige Deklarationsreihenfolge:
# Holen Sie sich den API -Endpunkt 1 @router.get ("/project/details/{project_id}") Async def method_two (project_id: str, ...): # ... # API -Endpunkt 2 Holen Sie sich @router.get ("/project/metadata/{project_id}") Async def method_three (project_id: str, ...): # ... # API -Endpunkt 3 Holen Sie sich 3 @router.get ("/project/{project_id}/{Employee_id}") Async def method_one (project_id: str, Mitarbeiter_ID: str, ...): # ...
, indem dieser Reihenfolge befolgt wird, wenn Endpunkte 2 und 3 aufgerufen werden, werden die entsprechenden Methoden method_two () und method_three () wie beabsichtigt ausgeführt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3