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>
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!