forked from tiangolo/fastapi
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tut/extra-data-types.md (tiangolo#10534)
- Loading branch information
1 parent
28f86a7
commit c5400f9
Showing
1 changed file
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
# Zusätzliche Datentypen | ||
|
||
Bisher haben Sie gängige Datentypen verwendet, wie zum Beispiel: | ||
|
||
* `int` | ||
* `float` | ||
* `str` | ||
* `bool` | ||
|
||
Sie können aber auch komplexere Datentypen verwenden. | ||
|
||
Und Sie haben immer noch die gleichen Funktionen wie bisher gesehen: | ||
|
||
* Großartige Editor-Unterstützung. | ||
* Datenkonvertierung bei eingehenden Requests. | ||
* Datenkonvertierung für Response-Daten. | ||
* Datenvalidierung. | ||
* Automatische Annotation und Dokumentation. | ||
|
||
## Andere Datentypen | ||
|
||
Hier sind einige der zusätzlichen Datentypen, die Sie verwenden können: | ||
|
||
* `UUID`: | ||
* Ein standardmäßiger „universell eindeutiger Bezeichner“ („Universally Unique Identifier“), der in vielen Datenbanken und Systemen als ID üblich ist. | ||
* Wird in Requests und Responses als `str` dargestellt. | ||
* `datetime.datetime`: | ||
* Ein Python `datetime.datetime`. | ||
* Wird in Requests und Responses als `str` im ISO 8601-Format dargestellt, etwa: `2008-09-15T15:53:00+05:00`. | ||
* `datetime.date`: | ||
* Python `datetime.date`. | ||
* Wird in Requests und Responses als `str` im ISO 8601-Format dargestellt, etwa: `2008-09-15`. | ||
* `datetime.time`: | ||
* Ein Python `datetime.time`. | ||
* Wird in Requests und Responses als `str` im ISO 8601-Format dargestellt, etwa: `14:23:55.003`. | ||
* `datetime.timedelta`: | ||
* Ein Python `datetime.timedelta`. | ||
* Wird in Requests und Responses als `float` der Gesamtsekunden dargestellt. | ||
* Pydantic ermöglicht auch die Darstellung als „ISO 8601 Zeitdifferenz-Kodierung“, <a href="https://docs.pydantic.dev/1.10/usage/exporting_models/#json_encoders" class="external-link" target="_blank">Weitere Informationen finden Sie in der Dokumentation</a>. | ||
* `frozenset`: | ||
* Wird in Requests und Responses wie ein `set` behandelt: | ||
* Bei Requests wird eine Liste gelesen, Duplikate entfernt und in ein `set` umgewandelt. | ||
* Bei Responses wird das `set` in eine `list`e umgewandelt. | ||
* Das generierte Schema zeigt an, dass die `set`-Werte eindeutig sind (unter Verwendung von JSON Schemas `uniqueItems`). | ||
* `bytes`: | ||
* Standard Python-`bytes`. | ||
* In Requests und Responses werden sie als `str` behandelt. | ||
* Das generierte Schema wird anzeigen, dass es sich um einen `str` mit `binary` „Format“ handelt. | ||
* `Decimal`: | ||
* Standard Python `Decimal`. | ||
* In Requests und Responses wird es wie ein `float` behandelt. | ||
* Sie können alle gültigen Pydantic-Datentypen hier überprüfen: <a href="https://docs.pydantic.dev/latest/usage/types/types/" class="external-link" target="_blank">Pydantic data types</a>. | ||
|
||
## Beispiel | ||
|
||
Hier ist ein Beispiel für eine *Pfadoperation* mit Parametern, die einige der oben genannten Typen verwenden. | ||
|
||
=== "Python 3.10+" | ||
|
||
```Python hl_lines="1 3 12-16" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an_py310.py!} | ||
``` | ||
|
||
=== "Python 3.9+" | ||
|
||
```Python hl_lines="1 3 12-16" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an_py39.py!} | ||
``` | ||
|
||
=== "Python 3.8+" | ||
|
||
```Python hl_lines="1 3 13-17" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an.py!} | ||
``` | ||
|
||
=== "Python 3.10+ nicht annotiert" | ||
|
||
!!! tip | ||
Bevorzugen Sie die `Annotated`-Version, falls möglich. | ||
|
||
```Python hl_lines="1 2 11-15" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_py310.py!} | ||
``` | ||
|
||
=== "Python 3.8+ nicht annotiert" | ||
|
||
!!! tip | ||
Bevorzugen Sie die `Annotated`-Version, falls möglich. | ||
|
||
```Python hl_lines="1 2 12-16" | ||
{!> ../../../docs_src/extra_data_types/tutorial001.py!} | ||
``` | ||
|
||
Beachten Sie, dass die Parameter innerhalb der Funktion ihren natürlichen Datentyp haben und Sie beispielsweise normale Datumsmanipulationen durchführen können, wie zum Beispiel: | ||
|
||
=== "Python 3.10+" | ||
|
||
```Python hl_lines="18-19" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an_py310.py!} | ||
``` | ||
|
||
=== "Python 3.9+" | ||
|
||
```Python hl_lines="18-19" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an_py39.py!} | ||
``` | ||
|
||
=== "Python 3.8+" | ||
|
||
```Python hl_lines="19-20" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_an.py!} | ||
``` | ||
|
||
=== "Python 3.10+ nicht annotiert" | ||
|
||
!!! tip | ||
Bevorzugen Sie die `Annotated`-Version, falls möglich. | ||
|
||
```Python hl_lines="17-18" | ||
{!> ../../../docs_src/extra_data_types/tutorial001_py310.py!} | ||
``` | ||
|
||
=== "Python 3.8+ nicht annotiert" | ||
|
||
!!! tip | ||
Bevorzugen Sie die `Annotated`-Version, falls möglich. | ||
|
||
```Python hl_lines="18-19" | ||
{!> ../../../docs_src/extra_data_types/tutorial001.py!} | ||
``` |