Heim > Backend-Entwicklung > Python-Tutorial > Wie definiere ich mehrere API-Endpunkte mit unterschiedlichen Pfaden und demselben Pfadparameter in FastAPI?

Wie definiere ich mehrere API-Endpunkte mit unterschiedlichen Pfaden und demselben Pfadparameter in FastAPI?

Susan Sarandon
Freigeben: 2024-10-31 07:10:29
Original
879 Leute haben es durchsucht

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

Definieren mehrerer API-Endpunkte mit unterschiedlichen Pfaden und demselben Pfadparameter in FastAPI

In FastAPI kann die Deklaration mehrerer API-Endpunkte mit unterschiedlichen Pfaden, aber demselben Pfadparameter dazu führen unerwartetes Routenanpassungsverhalten.

Betrachten Sie das folgende Beispiel:

<code class="python"># 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, ...):

    # ...</code>
Nach dem Login kopieren

Wenn in diesem Szenario die API-Endpunkte 2 und 3 aufgerufen werden, führen sie die in Endpunkt 1 definierte Controller-Methode aus, nämlich method_one (). Dies liegt daran, wie FastAPI Endpunkte nacheinander auswertet.

Lösung

Um eine ordnungsgemäße Routenübereinstimmung sicherzustellen, 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/ Details/{Projekt-ID}. Daher lautet die korrekte Deklarationsreihenfolge:

<code class="python"># GET API Endpoint 1
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):

    # ...

# GET API Endpoint 2
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):

    # ...

# GET API Endpoint 3
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):

    # ...</code>
Nach dem Login kopieren

Wenn Sie diese Reihenfolge befolgen, werden beim Aufruf der Endpunkte 2 und 3 die entsprechenden Methoden method_two() und method_ three() wie vorgesehen ausgeführt.

Das obige ist der detaillierte Inhalt vonWie definiere ich mehrere API-Endpunkte mit unterschiedlichen Pfaden und demselben Pfadparameter in FastAPI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage