Browse Source

Update tutorial/path-params.md

pull/14015/head
Nils Lindemann 2 weeks ago
parent
commit
df6e086b1c
  1. 46
      docs/de/docs/tutorial/path-params.md

46
docs/de/docs/tutorial/path-params.md

@ -1,6 +1,6 @@
# Pfad-Parameter # Pfad-Parameter { #path-parameters }
Sie können Pfad-„Parameter“ oder -„Variablen“ mit der gleichen Syntax deklarieren, welche in Python-<abbr title="Format-String – Formatierter String: Der String enthält Variablen, die mit geschweiften Klammern umschlossen sind. Solche Stellen werden durch den Wert der Variable ersetzt">Format-Strings</abbr> verwendet wird: Sie können Pfad-„Parameter“ oder -„Variablen“ mit der gleichen Syntax deklarieren, welche in Python-Formatstrings verwendet wird:
{* ../../docs_src/path_params/tutorial001.py hl[6:7] *} {* ../../docs_src/path_params/tutorial001.py hl[6:7] *}
@ -12,7 +12,7 @@ Wenn Sie dieses Beispiel ausführen und auf <a href="http://127.0.0.1:8000/items
{"item_id":"foo"} {"item_id":"foo"}
``` ```
## Pfad-Parameter mit Typen ## Pfad-Parameter mit Typen { #path-parameters-with-types }
Sie können den Typ eines Pfad-Parameters in der Argumentliste der Funktion deklarieren, mit Standard-Python-Typannotationen: Sie können den Typ eines Pfad-Parameters in der Argumentliste der Funktion deklarieren, mit Standard-Python-Typannotationen:
@ -26,7 +26,7 @@ Dadurch erhalten Sie Editor-Unterstützung innerhalb Ihrer Funktion, mit Fehlerp
/// ///
## Daten-<abbr title="Auch bekannt als: Serialisierung, Parsen, Marshalling">Konversion</abbr> ## Daten-<abbr title="Auch bekannt als: Serialisierung, Parsen, Marshalling">Konversion</abbr> { #data-conversion }
Wenn Sie dieses Beispiel ausführen und Ihren Browser unter <a href="http://127.0.0.1:8000/items/3" class="external-link" target="_blank">http://127.0.0.1:8000/items/3</a> öffnen, sehen Sie als Response: Wenn Sie dieses Beispiel ausführen und Ihren Browser unter <a href="http://127.0.0.1:8000/items/3" class="external-link" target="_blank">http://127.0.0.1:8000/items/3</a> öffnen, sehen Sie als Response:
@ -42,7 +42,7 @@ Sprich, mit dieser Typdeklaration wird **FastAPI** die Anfrage automatisch <abbr
/// ///
## Datenvalidierung ## Datenvalidierung { #data-validation }
Wenn Sie aber im Browser <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a> besuchen, erhalten Sie eine hübsche HTTP-Fehlermeldung: Wenn Sie aber im Browser <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a> besuchen, erhalten Sie eine hübsche HTTP-Fehlermeldung:
@ -77,7 +77,7 @@ Das ist unglaublich hilfreich, wenn Sie Code entwickeln und debuggen, welcher mi
/// ///
## Dokumentation ## Dokumentation { #documentation }
Wenn Sie die Seite <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> in Ihrem Browser öffnen, sehen Sie eine automatische, interaktive API-Dokumentation: Wenn Sie die Seite <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> in Ihrem Browser öffnen, sehen Sie eine automatische, interaktive API-Dokumentation:
@ -91,7 +91,7 @@ Beachten Sie, dass der Pfad-Parameter dort als Ganzzahl deklariert ist.
/// ///
## Nützliche Standards. Alternative Dokumentation ## Nützliche Standards. Alternative Dokumentation { #standards-based-benefits-alternative-documentation }
Und weil das generierte Schema vom <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md" class="external-link" target="_blank">OpenAPI</a>-Standard kommt, gibt es viele kompatible Tools. Und weil das generierte Schema vom <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md" class="external-link" target="_blank">OpenAPI</a>-Standard kommt, gibt es viele kompatible Tools.
@ -101,15 +101,15 @@ Zum Beispiel bietet **FastAPI** selbst eine alternative API-Dokumentation (verwe
Und viele weitere kompatible Tools. Inklusive Codegenerierung für viele Sprachen. Und viele weitere kompatible Tools. Inklusive Codegenerierung für viele Sprachen.
## Pydantic ## Pydantic { #pydantic }
Die ganze Datenvalidierung wird hinter den Kulissen von <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a> durchgeführt, Sie profitieren also von dessen Vorteilen. Und Sie wissen, dass Sie in guten Händen sind. Die ganze Datenvalidierung wird hinter den Kulissen von <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> durchgeführt, Sie profitieren also von dessen Vorteilen. Und Sie wissen, dass Sie in guten Händen sind.
Sie können für Typ Deklarationen auch `str`, `float`, `bool` und viele andere komplexe Datentypen verwenden. Sie können für Typ Deklarationen auch `str`, `float`, `bool` und viele andere komplexe Datentypen verwenden.
Mehrere davon werden wir in den nächsten Kapiteln erkunden. Mehrere davon werden wir in den nächsten Kapiteln erkunden.
## Die Reihenfolge ist wichtig ## Die Reihenfolge ist wichtig { #order-matters }
Wenn Sie *Pfadoperationen* erstellen, haben Sie manchmal einen fixen Pfad. Wenn Sie *Pfadoperationen* erstellen, haben Sie manchmal einen fixen Pfad.
@ -129,11 +129,11 @@ Sie können eine Pfadoperation auch nicht erneut definieren:
Die erste Definition wird immer verwendet werden, da ihr Pfad zuerst übereinstimmt. Die erste Definition wird immer verwendet werden, da ihr Pfad zuerst übereinstimmt.
## Vordefinierte Parameterwerte ## Vordefinierte Parameterwerte { #predefined-values }
Wenn Sie eine *Pfadoperation* haben, welche einen *Pfad-Parameter* hat, aber Sie wollen, dass dessen gültige Werte vordefiniert sind, können Sie ein Standard-Python <abbr title="Enumeration, oder kurz Enum – Aufzählung">`Enum`</abbr> verwenden. Wenn Sie eine *Pfadoperation* haben, welche einen *Pfad-Parameter* hat, aber Sie wollen, dass dessen gültige Werte vordefiniert sind, können Sie ein Standard-Python <abbr title="Enumeration, oder kurz Enum – Aufzählung">`Enum`</abbr> verwenden.
### Erstellen Sie eine `Enum`-Klasse ### Erstellen Sie eine `Enum`-Klasse { #create-an-enum-class }
Importieren Sie `Enum` und erstellen Sie eine Unterklasse, die von `str` und `Enum` erbt. Importieren Sie `Enum` und erstellen Sie eine Unterklasse, die von `str` und `Enum` erbt.
@ -149,35 +149,35 @@ Erstellen Sie dann Klassen-Attribute mit festgelegten Werten, welches die erlaub
/// ///
/// tip | Tipp /// tip
Falls Sie sich fragen, was „AlexNet“, „ResNet“ und „LeNet“ ist, das sind Namen von <abbr title="Genau genommen, Deep-Learning-Modellarchitekturen">Modellen</abbr> für maschinelles Lernen. Falls Sie sich fragen, was „AlexNet“, „ResNet“ und „LeNet“ ist, das sind Namen von <abbr title="Genau genommen, Deep-Learning-Modellarchitekturen">Modellen</abbr> für maschinelles Lernen.
/// ///
### Deklarieren Sie einen *Pfad-Parameter* ### Deklarieren Sie einen *Pfad-Parameter* { #declare-a-path-parameter }
Dann erstellen Sie einen *Pfad-Parameter*, der als Typ die gerade erstellte Enum-Klasse hat (`ModelName`): Dann erstellen Sie einen *Pfad-Parameter*, der als Typ die gerade erstellte Enum-Klasse hat (`ModelName`):
{* ../../docs_src/path_params/tutorial005.py hl[16] *} {* ../../docs_src/path_params/tutorial005.py hl[16] *}
### Testen Sie es in der API-Dokumentation ### Testen Sie es in der API-Dokumentation { #check-the-docs }
Weil die erlaubten Werte für den *Pfad-Parameter* nun vordefiniert sind, kann die interaktive Dokumentation sie als Auswahl-Drop-Down anzeigen: Weil die erlaubten Werte für den *Pfad-Parameter* nun vordefiniert sind, kann die interaktive Dokumentation sie als Auswahl-Drop-Down anzeigen:
<img src="/img/tutorial/path-params/image03.png"> <img src="/img/tutorial/path-params/image03.png">
### Mit Python-*<abbr title="Enumeration – Aufzählung">Enums</abbr>* arbeiten ### Mit Python-*<abbr title="Enumeration – Aufzählung">Enums</abbr>* arbeiten { #working-with-python-enumerations }
Der *Pfad-Parameter* wird ein *<abbr title="Member – Mitglied: Einer der möglichen Werte einer Enumeration">Member</abbr> eines Enums* sein. Der *Pfad-Parameter* wird ein *<abbr title="Member – Mitglied: Einer der möglichen Werte einer Enumeration">Member</abbr> eines Enums* sein.
#### *Enum-Member* vergleichen #### *Enum-Member* vergleichen { #compare-enumeration-members }
Sie können ihn mit einem Member Ihres Enums `ModelName` vergleichen: Sie können ihn mit einem Member Ihres Enums `ModelName` vergleichen:
{* ../../docs_src/path_params/tutorial005.py hl[17] *} {* ../../docs_src/path_params/tutorial005.py hl[17] *}
#### *Enum-Wert* erhalten #### *Enum-Wert* erhalten { #get-the-enumeration-value }
Den tatsächlichen Wert (in diesem Fall ein `str`) erhalten Sie via `model_name.value`, oder generell, `ihr_enum_member.value`: Den tatsächlichen Wert (in diesem Fall ein `str`) erhalten Sie via `model_name.value`, oder generell, `ihr_enum_member.value`:
@ -189,7 +189,7 @@ Sie können den Wert `"lenet"` außerdem mittels `ModelName.lenet.value` abrufen
/// ///
#### *Enum-Member* zurückgeben #### *Enum-Member* zurückgeben { #return-enumeration-members }
Sie können *Enum-Member* in ihrer *Pfadoperation* zurückgeben, sogar verschachtelt in einem JSON-Body (z. B. als `dict`). Sie können *Enum-Member* in ihrer *Pfadoperation* zurückgeben, sogar verschachtelt in einem JSON-Body (z. B. als `dict`).
@ -206,7 +206,7 @@ In Ihrem Client erhalten Sie eine JSON-Response, wie etwa:
} }
``` ```
## Pfad Parameter die Pfade enthalten ## Pfad Parameter die Pfade enthalten { #path-parameters-containing-paths }
Angenommen, Sie haben eine *Pfadoperation* mit einem Pfad `/files/{file_path}`. Angenommen, Sie haben eine *Pfadoperation* mit einem Pfad `/files/{file_path}`.
@ -214,7 +214,7 @@ Aber `file_path` soll selbst einen *Pfad* enthalten, etwa `home/johndoe/myfile.t
Sprich, die URL für diese Datei wäre etwas wie: `/files/home/johndoe/myfile.txt`. Sprich, die URL für diese Datei wäre etwas wie: `/files/home/johndoe/myfile.txt`.
### OpenAPI Unterstützung ### OpenAPI Unterstützung { #openapi-support }
OpenAPI bietet nicht die Möglichkeit, dass ein *Pfad-Parameter* seinerseits einen *Pfad* enthalten kann, das würde zu Szenarios führen, die schwierig zu testen und zu definieren sind. OpenAPI bietet nicht die Möglichkeit, dass ein *Pfad-Parameter* seinerseits einen *Pfad* enthalten kann, das würde zu Szenarios führen, die schwierig zu testen und zu definieren sind.
@ -222,7 +222,7 @@ Trotzdem können Sie das in **FastAPI** tun, indem Sie eines der internen Tools
Die Dokumentation würde weiterhin funktionieren, allerdings wird nicht dokumentiert werden, dass der Parameter ein Pfad sein sollte. Die Dokumentation würde weiterhin funktionieren, allerdings wird nicht dokumentiert werden, dass der Parameter ein Pfad sein sollte.
### Pfad Konverter ### Pfad Konverter { #path-convertor }
Mittels einer Option direkt von Starlette können Sie einen *Pfad-Parameter* deklarieren, der einen Pfad enthalten soll, indem Sie eine URL wie folgt definieren: Mittels einer Option direkt von Starlette können Sie einen *Pfad-Parameter* deklarieren, der einen Pfad enthalten soll, indem Sie eine URL wie folgt definieren:
@ -244,7 +244,7 @@ In dem Fall wäre die URL: `/files//home/johndoe/myfile.txt`, mit einem doppelte
/// ///
## Zusammenfassung ## Zusammenfassung { #recap }
In **FastAPI** erhalten Sie mittels kurzer, intuitiver Typdeklarationen: In **FastAPI** erhalten Sie mittels kurzer, intuitiver Typdeklarationen:

Loading…
Cancel
Save