Heim > Backend-Entwicklung > Python-Tutorial > Wie gehe ich mit mehreren API-Endpunkten mit unterschiedlichen Pfaden, aber demselben Pfadparameter in FastAPI um?

Wie gehe ich mit mehreren API-Endpunkten mit unterschiedlichen Pfaden, aber demselben Pfadparameter in FastAPI um?

Susan Sarandon
Freigeben: 2024-10-30 19:56:03
Original
621 Leute haben es durchsucht

How do I handle multiple API endpoints with different paths but the same path parameter in FastAPI?

Mehrere API-Endpunkte mit unterschiedlichen Pfaden, aber demselben Pfadparameter in FastAPI

In FastAPI werden API-Endpunkte mit unterschiedlichen Pfaden, aber demselben Pfadparameter definiert kann erreicht werden, indem die Endpunkte der Reihe nach deklariert werden. Ein häufiges Problem tritt jedoch auf, wenn der erste im Router deklarierte Endpunkt anstelle des vorgesehenen Endpunkts aufgerufen wird, wenn andere Endpunkte mit einem gemeinsamen Pfadparameter ausgelöst werden.

Dieses Problem tritt auf, weil FastAPI Endpunkte in der Reihenfolge auswertet, in der sie erscheinen im Router. Wenn also der Endpunkt mit einem gemeinsamen Pfadparameter (/project/{project_id}/...) zuerst definiert wird, wird er zuerst ausgewertet und verarbeitet alle Anfragen an diesen Pfad, unabhängig vom zusätzlichen Pfadparameter.

Lösung:

Um dieses Problem zu beheben, stellen Sie sicher, dass die Endpunkte mit unterschiedlichen Pfadparametern vor dem Endpunkt mit einem gemeinsamen Pfadparameter deklariert werden. Dadurch wird sichergestellt, dass der richtige Endpunkt basierend auf dem spezifischen bereitgestellten Pfad ausgelöst wird.

Betrachten Sie beispielsweise den folgenden überarbeiteten Router:

<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>
Nach dem Login kopieren

In diesem aktualisierten Router sind die Endpunkte mit dem eindeutigen Pfad ausgestattet Parameter (/project/details/{project_id} und /project/metadata/{project_id}) werden zuerst deklariert. Wenn diese Endpunkte ausgelöst werden, wird daher die entsprechende Controller-Methode korrekt ausgeführt und das Problem der nicht übereinstimmenden Controller-Ausführung wird behoben.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit mehreren API-Endpunkten mit unterschiedlichen Pfaden, aber demselben Pfadparameter in FastAPI um?. 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