Browse Source

Update how-to/separate-openapi-schemas.md

pull/14015/head
Nils Lindemann 2 weeks ago
parent
commit
11afc97240
  1. 26
      docs/de/docs/how-to/separate-openapi-schemas.md

26
docs/de/docs/how-to/separate-openapi-schemas.md

@ -1,18 +1,18 @@
# Separate OpenAPI-Schemas für Eingabe und Ausgabe oder nicht
# Separate OpenAPI-Schemas für Eingabe und Ausgabe oder nicht { #separate-openapi-schemas-for-input-and-output-or-not }
Bei Verwendung von **Pydantic v2** ist die generierte OpenAPI etwas genauer und **korrekter** als zuvor. 😎
Tatsächlich gibt es in einigen Fällen sogar **zwei JSON-Schemas** in OpenAPI für dasselbe Pydantic-Modell für Eingabe und Ausgabe, je nachdem, ob sie **Defaultwerte** haben.
Tatsächlich gibt es in einigen Fällen sogar **zwei JSON-Schemas** in OpenAPI für dasselbe Pydantic-Modell, für Eingabe und Ausgabe, je nachdem, ob sie **Defaultwerte** haben.
Sehen wir uns an, wie das funktioniert und wie Sie es bei Bedarf ändern können.
## Pydantic-Modelle für Eingabe und Ausgabe
## Pydantic-Modelle für Eingabe und Ausgabe { #pydantic-models-for-input-and-output }
Nehmen wir an, Sie haben ein Pydantic-Modell mit Defaultwerten wie dieses:
{* ../../docs_src/separate_openapi_schemas/tutorial001_py310.py ln[1:7] hl[7] *}
### Modell für Eingabe
### Modell für Eingabe { #model-for-input }
Wenn Sie dieses Modell wie hier als Eingabe verwenden:
@ -20,7 +20,7 @@ Wenn Sie dieses Modell wie hier als Eingabe verwenden:
... dann ist das Feld `description` **nicht erforderlich**. Weil es den Defaultwert `None` hat.
### Eingabemodell in der Dokumentation
### Eingabemodell in der Dokumentation { #input-model-in-docs }
Sie können überprüfen, dass das Feld `description` in der Dokumentation kein **rotes Sternchen** enthält, es ist nicht als erforderlich markiert:
@ -28,15 +28,15 @@ Sie können überprüfen, dass das Feld `description` in der Dokumentation kein
<img src="/img/tutorial/separate-openapi-schemas/image01.png">
</div>
### Modell für die Ausgabe
### Modell für die Ausgabe { #model-for-output }
Wenn Sie jedoch dasselbe Modell als Ausgabe verwenden, wie hier:
{* ../../docs_src/separate_openapi_schemas/tutorial001_py310.py hl[19] *}
... dann, weil `description` einen Defaultwert hat, wird es, wenn Sie für dieses Feld **nichts zurückgeben**, immer noch diesen **Defaultwert** haben.
... dann, weil `description` einen Defaultwert hat, wird es, wenn Sie für dieses Feld **nichts zurückgeben**, immer noch diesen **Defaultwert** haben.
### Modell für Ausgabe-Responsedaten
### Modell für Ausgabe-Responsedaten { #model-for-output-response-data }
Wenn Sie mit der Dokumentation interagieren und die Response überprüfen, enthält die JSON-Response den Defaultwert (`null`), obwohl der Code nichts in eines der `description`-Felder geschrieben hat:
@ -55,7 +55,7 @@ Aus diesem Grund kann das JSON-Schema für ein Modell unterschiedlich sein, je n
* für die **Eingabe** ist `description` **nicht erforderlich**
* für die **Ausgabe** ist es **erforderlich** (und möglicherweise `None` oder, in JSON-Begriffen, `null`)
### Ausgabemodell in der Dokumentation
### Ausgabemodell in der Dokumentation { #model-for-output-in-docs }
Sie können das Ausgabemodell auch in der Dokumentation überprüfen. **Sowohl** `name` **als auch** `description` sind mit einem **roten Sternchen** als **erforderlich** markiert:
@ -63,7 +63,7 @@ Sie können das Ausgabemodell auch in der Dokumentation überprüfen. **Sowohl**
<img src="/img/tutorial/separate-openapi-schemas/image03.png">
</div>
### Eingabe- und Ausgabemodell in der Dokumentation
### Eingabe- und Ausgabemodell in der Dokumentation { #model-for-input-and-output-in-docs }
Und wenn Sie alle verfügbaren Schemas (JSON-Schemas) in OpenAPI überprüfen, werden Sie feststellen, dass es zwei gibt, ein `Item-Input` und ein `Item-Output`.
@ -77,7 +77,7 @@ Aber für `Item-Output` ist `description` **erforderlich**, es hat ein rotes Ste
Mit dieser Funktion von **Pydantic v2** ist Ihre API-Dokumentation **präziser**, und wenn Sie über automatisch generierte Clients und SDKs verfügen, sind diese auch präziser, mit einer besseren **Entwicklererfahrung** und Konsistenz. 🎉
## Schemas nicht trennen
## Schemas nicht trennen { #do-not-separate-schemas }
Nun gibt es einige Fälle, in denen Sie möglicherweise **dasselbe Schema für Eingabe und Ausgabe** haben möchten.
@ -85,7 +85,7 @@ Der Hauptanwendungsfall hierfür besteht wahrscheinlich darin, dass Sie das mal
In diesem Fall können Sie diese Funktion in **FastAPI** mit dem Parameter `separate_input_output_schemas=False` deaktivieren.
/// info
/// info | Info
Unterstützung für `separate_input_output_schemas` wurde in FastAPI `0.102.0` hinzugefügt. 🤓
@ -93,7 +93,7 @@ Unterstützung für `separate_input_output_schemas` wurde in FastAPI `0.102.0` h
{* ../../docs_src/separate_openapi_schemas/tutorial002_py310.py hl[10] *}
### Gleiches Schema für Eingabe- und Ausgabemodelle in der Dokumentation
### Gleiches Schema für Eingabe- und Ausgabemodelle in der Dokumentation { #same-schema-for-input-and-output-models-in-docs }
Und jetzt wird es ein einziges Schema für die Eingabe und Ausgabe des Modells geben, nur `Item`, und es wird `description` als **nicht erforderlich** kennzeichnen:

Loading…
Cancel
Save