From fc8a9963db4e46a1090902e8e2d239947a0cd13a Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Wed, 20 Sep 2023 23:14:27 +0200 Subject: [PATCH 01/17] German translation of docs/tutorial/body.md * Full translation * In sync with current en/docs/tutorial/body.md * Manually translated (Google translate rarely used) * Checked for errors using LanguageTool * Manually checked --- docs/de/docs/tutorial/body.md | 213 ++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 docs/de/docs/tutorial/body.md diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md new file mode 100644 index 0000000000000..0dcec8a0b5715 --- /dev/null +++ b/docs/de/docs/tutorial/body.md @@ -0,0 +1,213 @@ +# Request-Body + +Wenn Sie Daten von einem Klient (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Request-Body** (Deutsch: Anfrage-Körper). + +Ein **Request**-Body sind Daten, die vom Klient zu ihrer API gesendet werden. Ein **Response**-Body (Deutsch: Antwort-Körper) sind Daten, die Ihre API zum Klient sendet. + +Ihre API sendet fast immer einen **Response**-Body. Aber Klienten senden nicht unbedingt immer **Request**-Bodys (sondern nur Metadaten). + +Um einen **Request**-Body zu senden, verwenden Sie Pydantic Modelle mit allen deren Fähigkeiten und Vorzügen. + +!!! info + Um Daten zu versenden, sollten Sie eines von: `POST` (meistverwendet), `PUT`, `DELETE` oder `PATCH` verwenden. + + Senden Sie einen Body mit einem `GET`-Request, dann führt das laut Spezifikation zu undefiniertem Verhalten. Trotzdem wird es von FastAPI unterstützt, für sehr komplexe/extreme Anwendungsfälle. + + Da aber davon abgeraten wird, zeigt die interaktive Dokumentation mit Swagger-Benutzeroberfläche die Dokumentation für den Body auch nicht an, wenn `GET` verwendet wird. Dazwischengeschaltete Proxys unterstützen es möglicherweise auch nicht. + +## Importieren Sie Pydantics `BaseModel` + +Zuerst müssen Sie `BaseModel` von `pydantic` importieren: + +=== "Python 3.10+" + + ```Python hl_lines="2" + {!> ../../../docs_src/body/tutorial001_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="4" + {!> ../../../docs_src/body/tutorial001.py!} + ``` + +## Erstellen Sie Ihr Datenmodell + +Dann deklarieren Sie Ihr Datenmodell als eine Klasse, die von `BaseModel` erbt. + +Verwenden Sie normale Python-Typen für die Klassenattribute: + +=== "Python 3.10+" + + ```Python hl_lines="5-9" + {!> ../../../docs_src/body/tutorial001_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="7-11" + {!> ../../../docs_src/body/tutorial001.py!} + ``` + +Wie auch bei Query-Parametern gilt, wenn ein Modell-Attribut einen Standardwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. + +Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python `dict`) wie dieses: + +```JSON +{ + "name": "Foo", + "description": "An optional description", + "price": 45.2, + "tax": 3.5 +} +``` + +Da `description` und `tax` optional sind (mit `None` als Standardwert), wäre folgendes JSON "`object`" auch gültig: + +```JSON +{ + "name": "Foo", + "price": 45.2 +} +``` + +## Deklarieren Sie es als Parameter + +Um es zu Ihrer *Pfad-Operation* hinzuzufügen, deklarieren Sie es auf die gleiche Weise, wie Sie Pfad- und Query-Parameter deklariert haben: + +=== "Python 3.10+" + + ```Python hl_lines="16" + {!> ../../../docs_src/body/tutorial001_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="18" + {!> ../../../docs_src/body/tutorial001.py!} + ``` + +... und deklarieren Sie seinen Typ als das Modell, welches Sie erstellt haben, `Item`. + +## Resultate + +Mit nur dieser Python-Typ-Deklaration, wird **FastAPI**: + +* Den Request-Body als JSON lesen. +* Die entsprechenden Typen konvertieren (falls nötig). +* Diese Daten validieren. + * Wenn die Daten ungültig sind, einen klar lesbaren Fehler zurückgeben, der anzeigt, wo und was die inkorrekten Daten waren. +* Ihnen die erhaltenen Daten im Parameter `item` übergeben. + * Da Sie diesen in der Funktion als vom Typ `Item` deklariert haben, erhalten Sie die ganze Editor-Unterstützung (Autovervollständigung, usw.) für alle Attribute und deren Typen. +* Eine JSON Schema Definition für Ihr Modell generieren, welche Sie überall sonst verwenden können, wenn es für Ihr Projekt Sinn macht. +* Diese Schemas werden Teil des generierten OpenAPI Schemas und werden von den UIs der automatisch generierten Dokumentation verwendet. + +## Automatisch generierte Dokumentation + +Die JSON Schemas Ihrer Modelle werden Teil ihrer OpenAPI-generierten Schemas und werden in der interaktiven API Dokumentation angezeigt: + + + +Und werden auch verwendet in der API-Dokumentation innerhalb jeder *Pfad-Operation*, welche sie braucht: + + + +## Editor Unterstützung + +In ihrem Editor, innerhalb Ihrer Funktion, erhalten Sie Typ-Hinweise und Code-Vervollständigung überall (was nicht der Fall wäre, wenn Sie ein `dict` anstelle eines Pydantic Modells erhalten hätten): + + + +Sie bekommen auch Fehler-Meldungen für inkorrekte Typ-Operationen: + + + +Das ist nicht zufällig so, das ganze Framework wurde um dieses Design herum aufgebaut. + +Und es wurde in der Designphase gründlich getestet, vor der Implementierung, um sicherzustellen, dass es mit jedem Editor funktioniert. + +Es gab sogar ein paar Änderungen an Pydantic selbst, um das zu unterstützen. + +Die vorherigen Screenshots zeigten Visual Studio Code. + +Aber Sie bekommen die gleiche Editor-Unterstützung in PyCharm und in den meisten anderen Python-Editoren: + + + +!!! tip + Wenn Sie PyCharm als Ihren Editor verwenden, probieren Sie das Pydantic PyCharm Plugin aus. + + Es verbessert die Editor-Unterstützung für Pydantic-Modelle, mit: + + * Code-Vervollständigung + * Typ-Überprüfungen + * Refaktorisierung + * Suchen + * Inspektionen + +## Das Modell verwenden + +Innerhalb der Funktion können Sie alle Attribute des Modells direkt verwenden: + +=== "Python 3.10+" + + ```Python hl_lines="19" + {!> ../../../docs_src/body/tutorial002_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="21" + {!> ../../../docs_src/body/tutorial002.py!} + ``` + +## Request-Body + Pfad-Parameter + +Sie können Pfad-Parameter und Request-Body gleichzeitig deklarieren. + +**FastAPI** erkennt, dass Funktionsparameter, die mit Pfad-Parametern übereinstimmen, **vom Pfad genommen** werden sollen, und dass Funktionsparameter, welche Pydantic-Modelle sind, **vom Request-Body genommen** werden sollen. + +=== "Python 3.10+" + + ```Python hl_lines="15-16" + {!> ../../../docs_src/body/tutorial003_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="17-18" + {!> ../../../docs_src/body/tutorial003.py!} + ``` + +## Request-Body + Pfad- + Query-Parameter + +Sie können auch zur gleichen Zeit **Body-**, **Pfad-** und **Query-Parameter** deklarieren. + +**FastAPI** wird jeden Parameter korrekt erkennen und die Daten vom richtigen Ort holen. + +=== "Python 3.10+" + + ```Python hl_lines="16" + {!> ../../../docs_src/body/tutorial004_py310.py!} + ``` + +=== "Python 3.6+" + + ```Python hl_lines="18" + {!> ../../../docs_src/body/tutorial004.py!} + ``` + +die Funktionsparameter werden wie folgt erkannt: + +* Wenn der Parameter auch im **Pfad** deklariert wurde, wird er als Pfad-Parameter interpretiert. +* Wenn der Parameter ein **einfacher Typ** ist (wie `int`, `float`, `str`, `bool`, usw.), wird er als **Query**-Parameter interpretiert. +* Wenn der Parameter vom Typ eines **Pydantic Modells** ist, wird er als Request-**Body** interpretiert. + +!!! Hinweis + FastAPI wird hier wissen, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Standardwertes `=None` + + Das `Union` in `Union[str, None]` wird von FastAPI nicht verwendet, aber es erlaubt Ihrem Editor, Sie besser zu unterstützen und Fehler zu erkennen. + +## Ohne Pydantic + +Wenn Sie keine Pydantic-Modelle verwenden wollen, können Sie auch **Body**-Parameter nehmen. Siehe die Dokumentation unter [Body - Mehrere Parameter: Einfache Werte im Body](body-multiple-params.md#singular-values-in-body){.internal-link target=\_blank}. From c1afd5766cff8c6948f58eccbedba50bba85a67a Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Thu, 21 Sep 2023 00:37:49 +0200 Subject: [PATCH 02/17] Make sentence shorter --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 0dcec8a0b5715..9458de75cbad8 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -204,7 +204,7 @@ die Funktionsparameter werden wie folgt erkannt: * Wenn der Parameter vom Typ eines **Pydantic Modells** ist, wird er als Request-**Body** interpretiert. !!! Hinweis - FastAPI wird hier wissen, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Standardwertes `=None` + FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Standardwertes `=None` Das `Union` in `Union[str, None]` wird von FastAPI nicht verwendet, aber es erlaubt Ihrem Editor, Sie besser zu unterstützen und Fehler zu erkennen. From e18009d3210f2771afe89fcf45d6543651a7039b Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Thu, 21 Sep 2023 16:34:43 +0200 Subject: [PATCH 03/17] Weniger eindeutschen Die englischen Worte sind in IT-Kreisen verbreiteter. Siehe die Diskussion bei #10290 --- docs/de/docs/tutorial/body.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 9458de75cbad8..7530a5e0f35df 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -1,10 +1,10 @@ # Request-Body -Wenn Sie Daten von einem Klient (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Request-Body** (Deutsch: Anfrage-Körper). +Wenn Sie Daten von einem Client (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Request-Body** (Deutsch: Anfrage-Körper). -Ein **Request**-Body sind Daten, die vom Klient zu ihrer API gesendet werden. Ein **Response**-Body (Deutsch: Antwort-Körper) sind Daten, die Ihre API zum Klient sendet. +Ein **Request**-Body sind Daten, die vom Client zu ihrer API gesendet werden. Ein **Response**-Body (Deutsch: Antwort-Körper) sind Daten, die Ihre API zum Client sendet. -Ihre API sendet fast immer einen **Response**-Body. Aber Klienten senden nicht unbedingt immer **Request**-Bodys (sondern nur Metadaten). +Ihre API sendet fast immer einen **Response**-Body. Aber Clients senden nicht unbedingt immer **Request**-Bodys (sondern nur Metadaten). Um einen **Request**-Body zu senden, verwenden Sie Pydantic Modelle mit allen deren Fähigkeiten und Vorzügen. From 05260a3a6716168d0d29fbb9cd7cb1db86f1ddfc Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Thu, 21 Sep 2023 18:37:49 +0200 Subject: [PATCH 04/17] Standardwert -> Defaultwert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Passt besser. Steht auch bei Leo als erste Übersetzung --- docs/de/docs/tutorial/body.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 7530a5e0f35df..7c74b7c58a678 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -49,7 +49,7 @@ Verwenden Sie normale Python-Typen für die Klassenattribute: {!> ../../../docs_src/body/tutorial001.py!} ``` -Wie auch bei Query-Parametern gilt, wenn ein Modell-Attribut einen Standardwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. +Wie auch bei Query-Parametern gilt, wenn ein Modell-Attribut einen Defaultwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python `dict`) wie dieses: @@ -62,7 +62,7 @@ Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python `dict` } ``` -Da `description` und `tax` optional sind (mit `None` als Standardwert), wäre folgendes JSON "`object`" auch gültig: +Da `description` und `tax` optional sind (mit `None` als Defaultwert), wäre folgendes JSON "`object`" auch gültig: ```JSON { @@ -204,7 +204,7 @@ die Funktionsparameter werden wie folgt erkannt: * Wenn der Parameter vom Typ eines **Pydantic Modells** ist, wird er als Request-**Body** interpretiert. !!! Hinweis - FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Standardwertes `=None` + FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `=None` Das `Union` in `Union[str, None]` wird von FastAPI nicht verwendet, aber es erlaubt Ihrem Editor, Sie besser zu unterstützen und Fehler zu erkennen. From c53f17fa6600974c70d63c20565de1c6712e9044 Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Tue, 26 Sep 2023 02:26:56 +0200 Subject: [PATCH 05/17] Fix formatting Translating the text changed the icon and coloring of the box --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 7c74b7c58a678..4f9115ee415fb 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -203,7 +203,7 @@ die Funktionsparameter werden wie folgt erkannt: * Wenn der Parameter ein **einfacher Typ** ist (wie `int`, `float`, `str`, `bool`, usw.), wird er als **Query**-Parameter interpretiert. * Wenn der Parameter vom Typ eines **Pydantic Modells** ist, wird er als Request-**Body** interpretiert. -!!! Hinweis +!!! note "Hinweis" FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `=None` Das `Union` in `Union[str, None]` wird von FastAPI nicht verwendet, aber es erlaubt Ihrem Editor, Sie besser zu unterstützen und Fehler zu erkennen. From ae4b4186b38720a99612a970d2b64c62a184a84a Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Fri, 29 Sep 2023 12:21:35 +0200 Subject: [PATCH 06/17] Improve translation of "path operation" --- docs/de/docs/tutorial/body.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 4f9115ee415fb..53ff57a6cc6c2 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -73,7 +73,7 @@ Da `description` und `tax` optional sind (mit `None` als Defaultwert), wäre fol ## Deklarieren Sie es als Parameter -Um es zu Ihrer *Pfad-Operation* hinzuzufügen, deklarieren Sie es auf die gleiche Weise, wie Sie Pfad- und Query-Parameter deklariert haben: +Um es zu Ihrer *Pfadoperation* hinzuzufügen, deklarieren Sie es auf die gleiche Weise, wie Sie Pfad- und Query-Parameter deklariert haben: === "Python 3.10+" @@ -108,7 +108,7 @@ Die JSON Schemas Ihrer Modelle werden Teil ihrer OpenAPI-generierten Schemas und -Und werden auch verwendet in der API-Dokumentation innerhalb jeder *Pfad-Operation*, welche sie braucht: +Und werden auch verwendet in der API-Dokumentation innerhalb jeder *Pfadoperation*, welche sie braucht: From 0bfa1f8e7475ca752ae33afa0babe16a3b52c2d0 Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Mon, 2 Oct 2023 18:41:25 +0200 Subject: [PATCH 07/17] Write `Requestbody` and `Responsebody` as one word Also add missing dash in a few locations. --- docs/de/docs/tutorial/body.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 53ff57a6cc6c2..52b10a64d5b39 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -1,12 +1,12 @@ -# Request-Body +# Requestbody -Wenn Sie Daten von einem Client (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Request-Body** (Deutsch: Anfrage-Körper). +Wenn Sie Daten von einem Client (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Requestbody** (Deutsch: Anfragekörper). -Ein **Request**-Body sind Daten, die vom Client zu ihrer API gesendet werden. Ein **Response**-Body (Deutsch: Antwort-Körper) sind Daten, die Ihre API zum Client sendet. +Ein **Request**body sind Daten, die vom Client zu ihrer API gesendet werden. Ein **Response**body (Deutsch: Antwortkörper) sind Daten, die Ihre API zum Client sendet. -Ihre API sendet fast immer einen **Response**-Body. Aber Clients senden nicht unbedingt immer **Request**-Bodys (sondern nur Metadaten). +Ihre API sendet fast immer einen **Response**body. Aber Clients senden nicht unbedingt immer **Request**bodys (sondern nur Metadaten). -Um einen **Request**-Body zu senden, verwenden Sie Pydantic Modelle mit allen deren Fähigkeiten und Vorzügen. +Um einen **Request**body zu deklarieren, verwenden Sie Pydantic-Modelle mit allen deren Fähigkeiten und Vorzügen. !!! info Um Daten zu versenden, sollten Sie eines von: `POST` (meistverwendet), `PUT`, `DELETE` oder `PATCH` verwenden. @@ -93,7 +93,7 @@ Um es zu Ihrer *Pfadoperation* hinzuzufügen, deklarieren Sie es auf die gleiche Mit nur dieser Python-Typ-Deklaration, wird **FastAPI**: -* Den Request-Body als JSON lesen. +* Den Requestbody als JSON lesen. * Die entsprechenden Typen konvertieren (falls nötig). * Diese Daten validieren. * Wenn die Daten ungültig sind, einen klar lesbaren Fehler zurückgeben, der anzeigt, wo und was die inkorrekten Daten waren. @@ -161,11 +161,11 @@ Innerhalb der Funktion können Sie alle Attribute des Modells direkt verwenden: {!> ../../../docs_src/body/tutorial002.py!} ``` -## Request-Body + Pfad-Parameter +## Requestbody- + Pfad-Parameter -Sie können Pfad-Parameter und Request-Body gleichzeitig deklarieren. +Sie können Pfad- und Requestbody-Parameter gleichzeitig deklarieren. -**FastAPI** erkennt, dass Funktionsparameter, die mit Pfad-Parametern übereinstimmen, **vom Pfad genommen** werden sollen, und dass Funktionsparameter, welche Pydantic-Modelle sind, **vom Request-Body genommen** werden sollen. +**FastAPI** erkennt, dass Funktionsparameter, die mit Pfad-Parametern übereinstimmen, **vom Pfad genommen** werden sollen, und dass Funktionsparameter, welche Pydantic-Modelle sind, **vom Requestbody genommen** werden sollen. === "Python 3.10+" @@ -179,7 +179,7 @@ Sie können Pfad-Parameter und Request-Body gleichzeitig deklarieren. {!> ../../../docs_src/body/tutorial003.py!} ``` -## Request-Body + Pfad- + Query-Parameter +## Requestbody- + Pfad- + Query-Parameter Sie können auch zur gleichen Zeit **Body-**, **Pfad-** und **Query-Parameter** deklarieren. @@ -201,7 +201,7 @@ die Funktionsparameter werden wie folgt erkannt: * Wenn der Parameter auch im **Pfad** deklariert wurde, wird er als Pfad-Parameter interpretiert. * Wenn der Parameter ein **einfacher Typ** ist (wie `int`, `float`, `str`, `bool`, usw.), wird er als **Query**-Parameter interpretiert. -* Wenn der Parameter vom Typ eines **Pydantic Modells** ist, wird er als Request-**Body** interpretiert. +* Wenn der Parameter vom Typ eines **Pydantic-Modells** ist, wird er als Request**body** interpretiert. !!! note "Hinweis" FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `=None` From ba3ff87b072d52a4670e8c99f976245ed1918974 Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Thu, 5 Oct 2023 04:21:24 +0200 Subject: [PATCH 08/17] A few improvements Inspired by reading translations by @fhabers21 --- docs/de/docs/tutorial/body.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 52b10a64d5b39..2c5e775f07fab 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -100,11 +100,11 @@ Mit nur dieser Python-Typ-Deklaration, wird **FastAPI**: * Ihnen die erhaltenen Daten im Parameter `item` übergeben. * Da Sie diesen in der Funktion als vom Typ `Item` deklariert haben, erhalten Sie die ganze Editor-Unterstützung (Autovervollständigung, usw.) für alle Attribute und deren Typen. * Eine JSON Schema Definition für Ihr Modell generieren, welche Sie überall sonst verwenden können, wenn es für Ihr Projekt Sinn macht. -* Diese Schemas werden Teil des generierten OpenAPI Schemas und werden von den UIs der automatisch generierten Dokumentation verwendet. +* Diese Schemas werden Teil des generierten OpenAPI-Schemas und werden von den UIs der automatischen Dokumentation verwendet. -## Automatisch generierte Dokumentation +## Automatische Dokumentation -Die JSON Schemas Ihrer Modelle werden Teil ihrer OpenAPI-generierten Schemas und werden in der interaktiven API Dokumentation angezeigt: +Die JSON-Schemas Ihrer Modelle werden Teil ihrer OpenAPI-generierten Schemas und werden in der interaktiven API Dokumentation angezeigt: From 5a320e306bda7fb0096d9245c41663871344dc9a Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Sat, 14 Oct 2023 04:03:09 +0200 Subject: [PATCH 09/17] Fix link --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 2c5e775f07fab..344b4781d3ff9 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -210,4 +210,4 @@ die Funktionsparameter werden wie folgt erkannt: ## Ohne Pydantic -Wenn Sie keine Pydantic-Modelle verwenden wollen, können Sie auch **Body**-Parameter nehmen. Siehe die Dokumentation unter [Body - Mehrere Parameter: Einfache Werte im Body](body-multiple-params.md#singular-values-in-body){.internal-link target=\_blank}. +Wenn Sie keine Pydantic-Modelle verwenden wollen, können Sie auch **Body**-Parameter nehmen. Siehe die Dokumentation unter [Body – Mehrere Parameter: Einfache Werte im Body](body-multiple-params.md#einzelne-werte-im-body){.internal-link target=\_blank}. From 377cfc50554f69631ce430292e3ac4e7db55388b Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Tue, 17 Oct 2023 19:02:59 +0200 Subject: [PATCH 10/17] "Normal" -> "Standard" --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 344b4781d3ff9..7143ad8a06f72 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -35,7 +35,7 @@ Zuerst müssen Sie `BaseModel` von `pydantic` importieren: Dann deklarieren Sie Ihr Datenmodell als eine Klasse, die von `BaseModel` erbt. -Verwenden Sie normale Python-Typen für die Klassenattribute: +Verwenden Sie Standard Python-Typen für die Klassenattribute: === "Python 3.10+" From 9f987c0441e59b841d3529512b9d7ee810b06d37 Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Tue, 17 Oct 2023 20:22:54 +0200 Subject: [PATCH 11/17] Sync with #10442 --- docs/de/docs/tutorial/body.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 7143ad8a06f72..6880117bc1d37 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -25,7 +25,7 @@ Zuerst müssen Sie `BaseModel` von `pydantic` importieren: {!> ../../../docs_src/body/tutorial001_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="4" {!> ../../../docs_src/body/tutorial001.py!} @@ -43,7 +43,7 @@ Verwenden Sie Standard Python-Typen für die Klassenattribute: {!> ../../../docs_src/body/tutorial001_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="7-11" {!> ../../../docs_src/body/tutorial001.py!} @@ -81,7 +81,7 @@ Um es zu Ihrer *Pfadoperation* hinzuzufügen, deklarieren Sie es auf die gleiche {!> ../../../docs_src/body/tutorial001_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="18" {!> ../../../docs_src/body/tutorial001.py!} @@ -155,7 +155,7 @@ Innerhalb der Funktion können Sie alle Attribute des Modells direkt verwenden: {!> ../../../docs_src/body/tutorial002_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="21" {!> ../../../docs_src/body/tutorial002.py!} @@ -173,7 +173,7 @@ Sie können Pfad- und Requestbody-Parameter gleichzeitig deklarieren. {!> ../../../docs_src/body/tutorial003_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="17-18" {!> ../../../docs_src/body/tutorial003.py!} @@ -191,7 +191,7 @@ Sie können auch zur gleichen Zeit **Body-**, **Pfad-** und **Query-Parameter** {!> ../../../docs_src/body/tutorial004_py310.py!} ``` -=== "Python 3.6+" +=== "Python 3.8+" ```Python hl_lines="18" {!> ../../../docs_src/body/tutorial004.py!} From 639cd3777a2f7d2ad0d8326e2583c2d72141c69f Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Sun, 22 Oct 2023 18:23:01 +0200 Subject: [PATCH 12/17] "Tip" -> "Tipp" --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 6880117bc1d37..e315c88906a17 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -134,7 +134,7 @@ Aber Sie bekommen die gleiche Editor-Unterstützung in -!!! tip +!!! tip "Tipp" Wenn Sie PyCharm als Ihren Editor verwenden, probieren Sie das Pydantic PyCharm Plugin aus. Es verbessert die Editor-Unterstützung für Pydantic-Modelle, mit: From e0feed21363653fcdba0e4b1fb3ae5fdba4692ae Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Sat, 11 Nov 2023 02:38:27 +0100 Subject: [PATCH 13/17] "Standard " -> "Standard-" --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index e315c88906a17..f5b91ef475ce1 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -35,7 +35,7 @@ Zuerst müssen Sie `BaseModel` von `pydantic` importieren: Dann deklarieren Sie Ihr Datenmodell als eine Klasse, die von `BaseModel` erbt. -Verwenden Sie Standard Python-Typen für die Klassenattribute: +Verwenden Sie Standard-Python-Typen für die Klassenattribute: === "Python 3.10+" From 82577463a8aef90341cc0b908a7c3b7bf9a4628d Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Wed, 15 Nov 2023 08:14:05 +0100 Subject: [PATCH 14/17] "Python " -> "Python-", etc. --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index f5b91ef475ce1..caadc22446c80 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -51,7 +51,7 @@ Verwenden Sie Standard-Python-Typen für die Klassenattribute: Wie auch bei Query-Parametern gilt, wenn ein Modell-Attribut einen Defaultwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. -Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python `dict`) wie dieses: +Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python-`dict`) wie dieses: ```JSON { From b80761893a53825c1fd5f9241d82ce6030429826 Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Sun, 3 Dec 2023 04:06:09 +0100 Subject: [PATCH 15/17] "Modell-Attribut" -> "Modellattribut" --- docs/de/docs/tutorial/body.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index caadc22446c80..0e8ce3a8abb6a 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -49,7 +49,7 @@ Verwenden Sie Standard-Python-Typen für die Klassenattribute: {!> ../../../docs_src/body/tutorial001.py!} ``` -Wie auch bei Query-Parametern gilt, wenn ein Modell-Attribut einen Defaultwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. +Wie auch bei Query-Parametern gilt, wenn ein Modellattribut einen Defaultwert hat, ist das Attribut nicht erforderlich. Ansonsten ist es erforderlich. Verwenden Sie `None`, um es als optional zu kennzeichnen. Zum Beispiel deklariert das obige Modell ein JSON "`object`" (oder Python-`dict`) wie dieses: From e461c494d8ddf9f7fdb0d549a80b06301e704f1f Mon Sep 17 00:00:00 2001 From: Nils Lindemann Date: Thu, 28 Dec 2023 20:55:05 +0100 Subject: [PATCH 16/17] Remove "-" --- docs/de/docs/tutorial/body.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/de/docs/tutorial/body.md b/docs/de/docs/tutorial/body.md index 0e8ce3a8abb6a..8563fa57aec7b 100644 --- a/docs/de/docs/tutorial/body.md +++ b/docs/de/docs/tutorial/body.md @@ -91,7 +91,7 @@ Um es zu Ihrer *Pfadoperation* hinzuzufügen, deklarieren Sie es auf die gleiche ## Resultate -Mit nur dieser Python-Typ-Deklaration, wird **FastAPI**: +Mit nur dieser Python-Typdeklaration, wird **FastAPI**: * Den Requestbody als JSON lesen. * Die entsprechenden Typen konvertieren (falls nötig). @@ -114,11 +114,11 @@ Und werden auch verwendet in der API-Dokumentation innerhalb jeder *Pfadoperatio ## Editor Unterstützung -In ihrem Editor, innerhalb Ihrer Funktion, erhalten Sie Typ-Hinweise und Code-Vervollständigung überall (was nicht der Fall wäre, wenn Sie ein `dict` anstelle eines Pydantic Modells erhalten hätten): +In ihrem Editor, innerhalb Ihrer Funktion, erhalten Sie Typhinweise und Code-Vervollständigung überall (was nicht der Fall wäre, wenn Sie ein `dict` anstelle eines Pydantic Modells erhalten hätten): -Sie bekommen auch Fehler-Meldungen für inkorrekte Typ-Operationen: +Sie bekommen auch Fehler-Meldungen für inkorrekte Typoperationen: @@ -140,7 +140,7 @@ Aber Sie bekommen die gleiche Editor-Unterstützung in Client (sagen wir, einem Browser) zu ihrer API senden, dann senden Sie diese als einen **Requestbody** (Deutsch: Anfragekörper). +Wenn Sie Daten von einem Client (sagen wir, einem Browser) zu Ihrer API senden, dann senden Sie diese als einen **Requestbody** (Deutsch: Anfragekörper). -Ein **Request**body sind Daten, die vom Client zu ihrer API gesendet werden. Ein **Response**body (Deutsch: Antwortkörper) sind Daten, die Ihre API zum Client sendet. +Ein **Request**body sind Daten, die vom Client zu Ihrer API gesendet werden. Ein **Response**body (Deutsch: Antwortkörper) sind Daten, die Ihre API zum Client sendet. Ihre API sendet fast immer einen **Response**body. Aber Clients senden nicht unbedingt immer **Request**bodys (sondern nur Metadaten). @@ -114,7 +114,7 @@ Und werden auch verwendet in der API-Dokumentation innerhalb jeder *Pfadoperatio ## Editor Unterstützung -In ihrem Editor, innerhalb Ihrer Funktion, erhalten Sie Typhinweise und Code-Vervollständigung überall (was nicht der Fall wäre, wenn Sie ein `dict` anstelle eines Pydantic Modells erhalten hätten): +In Ihrem Editor, innerhalb Ihrer Funktion, erhalten Sie Typhinweise und Code-Vervollständigung überall (was nicht der Fall wäre, wenn Sie ein `dict` anstelle eines Pydantic Modells erhalten hätten): @@ -197,14 +197,14 @@ Sie können auch zur gleichen Zeit **Body-**, **Pfad-** und **Query-Parameter** {!> ../../../docs_src/body/tutorial004.py!} ``` -die Funktionsparameter werden wie folgt erkannt: +Die Funktionsparameter werden wie folgt erkannt: * Wenn der Parameter auch im **Pfad** deklariert wurde, wird er als Pfad-Parameter interpretiert. * Wenn der Parameter ein **einfacher Typ** ist (wie `int`, `float`, `str`, `bool`, usw.), wird er als **Query**-Parameter interpretiert. * Wenn der Parameter vom Typ eines **Pydantic-Modells** ist, wird er als Request**body** interpretiert. !!! note "Hinweis" - FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `=None` + FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `= None` Das `Union` in `Union[str, None]` wird von FastAPI nicht verwendet, aber es erlaubt Ihrem Editor, Sie besser zu unterstützen und Fehler zu erkennen.