„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie definiere ich mehrere API -Endpunkte mit unterschiedlichen Pfaden und denselben Pfadparameter in Fastapi?

Wie definiere ich mehrere API -Endpunkte mit unterschiedlichen Pfaden und denselben Pfadparameter in Fastapi?

Gepostet am 2025-03-24
Durchsuche:908

How to Define Multiple API Endpoints with Different Paths and the Same Path Parameter in FastAPI?

definieren mehrere API -Endpunkte mit unterschiedlichen Pfaden und denselben Pfadparameter in fastapi

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.

Neuestes Tutorial Mehr>

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