Browse Source

Update index.md

pull/14015/head
Nils Lindemann 11 months ago
parent
commit
51adae7600
  1. 202
      docs/de/docs/index.md

202
docs/de/docs/index.md

@ -18,7 +18,7 @@
<img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Testabdeckung"> <img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Testabdeckung">
</a> </a>
<a href="https://pypi.org/project/fastapi" target="_blank"> <a href="https://pypi.org/project/fastapi" target="_blank">
<img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Paketversion"> <img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package-Version">
</a> </a>
<a href="https://pypi.org/project/fastapi" target="_blank"> <a href="https://pypi.org/project/fastapi" target="_blank">
<img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Unterstützte Python-Versionen"> <img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Unterstützte Python-Versionen">
@ -33,20 +33,20 @@
--- ---
FastAPI ist ein modernes, schnelles (hohe Performanz) Web-Framework zum Erstellen von APIs mit Python, basierend auf Standard-Python-Typhinweisen. FastAPI ist ein modernes, schnelles (hoch performantes) Webframework zur Erstellung von APIs mit Python auf Basis von Standard-Python-Typhinweisen.
Die wichtigsten Features: Seine Schlüssel-Merkmale sind:
* **Schnell**: Sehr hohe Performanz, auf Augenhöhe mit **NodeJS** und **Go** (dank Starlette und Pydantic). [Eines der schnellsten verfügbaren Python-Frameworks](#performance). * **Schnell**: Sehr hohe Performanz, auf Augenhöhe mit **NodeJS** und **Go** (dank Starlette und Pydantic). [Eines der schnellsten verfügbaren Python-Frameworks](#performance).
* **Schnell zu entwickeln**: Erhöhen Sie die Geschwindigkeit bei der Entwicklung von Features um etwa 200 % bis 300 %. * * **Schnell zu entwickeln**: Erhöhen Sie die Geschwindigkeit bei der Entwicklung von Features um etwa 200 % bis 300 %. *
* **Weniger Bugs**: Reduzieren Sie ca. 40 % der menschlich (vom Entwickler) verursachten Fehler. * * **Weniger Bugs**: Verringern Sie die von Menschen (Entwicklern) verursachten Fehler um etwa 40 %. *
* **Intuitiv**: Hervorragende Editor-Unterstützung. <abbr title="auch bekannt als: Auto-Complete, Autocompletion, IntelliSense">Completion</abbr> überall. Weniger Zeit mit Debugging verbringen. * **Intuitiv**: Hervorragende Editor-Unterstützung. <abbr title="auch bekannt als Auto-Complete, Autovervollständigung, IntelliSense">Code-Vervollständigung</abbr> überall. Weniger Zeit mit Debuggen verbringen.
* **Einfach**: Darauf ausgelegt, einfach zu verwenden und zu erlernen. Weniger Zeit mit der Dokumentation verbringen. * **Einfach**: So konzipiert, dass es einfach zu benutzen und zu erlernen ist. Weniger Zeit mit dem Lesen von Dokumentation verbringen.
* **Kurz**: Code-Duplizierung minimieren. Mehrere Features aus jeder Parameterdeklaration. Weniger Bugs. * **Kurz**: Minimieren Sie die Verdoppelung von Code. Mehrere Features aus jeder Parameterdeklaration. Weniger Bugs.
* **Robust**: Produktionsreifen Code erhalten. Mit automatischer interaktiver Dokumentation. * **Robust**: Erhalten Sie produktionsreifen Code. Mit automatischer, interaktiver Dokumentation.
* **Standardbasiert**: Basierend auf (und vollständig kompatibel mit) den offenen Standards für APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (früher bekannt als Swagger) und <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a>. * **Standards-basiert**: Basierend auf (und vollständig kompatibel mit) den offenen Standards für APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (früher bekannt als Swagger) und <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a>.
<small>* Schätzung basierend auf Tests mit einem internen Entwicklungsteam, das Produktionsanwendungen erstellt.</small> <small>* Schätzung basierend auf Tests in einem internen Entwicklungsteam, das Produktionsanwendungen erstellt.</small>
## Sponsoren { #sponsors } ## Sponsoren { #sponsors }
@ -63,51 +63,51 @@ Die wichtigsten Features:
<!-- /sponsors --> <!-- /sponsors -->
<a href="https://fastapi.tiangolo.com/de/fastapi-people/#sponsors" class="external-link" target="_blank">Weitere Sponsoren</a> <a href="https://fastapi.tiangolo.com/de/fastapi-people/#sponsors" class="external-link" target="_blank">Andere Sponsoren</a>
## Meinungen { #opinions } ## Meinungen { #opinions }
„_[...] Ich nutze **FastAPI** derzeit sehr viel. [...] Ich plane sogar, es für alle **ML-Services** meines Teams bei **Microsoft** zu verwenden. Einige davon werden in das Kernprodukt **Windows** integriert und einige in **Office**-Produkte._“ „_[...] Ich verwende **FastAPI** heutzutage sehr oft. [...] Ich habe tatsächlich vor, es für alle **ML-Services meines Teams bei Microsoft** zu verwenden. Einige davon werden in das Kernprodukt **Windows** und einige **Office**-Produkte integriert._“
<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Kabir Khan <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_Wir haben die **FastAPI**-Bibliothek verwendet, um einen **REST**-Server zu starten, der für **Predictions** abgefragt werden kann. [für Ludwig]_“ „_Wir haben die **FastAPI**-Bibliothek übernommen, um einen **REST**-Server zu erstellen, der für **Vorhersagen** abgefragt werden kann. [für Ludwig]_“
<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin und Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, und Sai Sumanth Miryala – <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_**Netflix** freut sich, die Open-Source-Veröffentlichung unseres Orchestrierungs-Frameworks für **Krisenmanagement** bekannt zu geben: **Dispatch**! [gebaut mit **FastAPI**]_“ „_**Netflix** freut sich, die Open-Source-Veröffentlichung unseres **Krisenmanagement**-Orchestrierung-Frameworks bekannt zu geben: **Dispatch**! [erstellt mit **FastAPI**]_“
<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_Ich bin hellauf begeistert von **FastAPI**. Es macht so viel Spaß!_“ „_Ich bin hellauf begeistert von **FastAPI**. Es macht so viel Spaß!_“
<div style="text-align: right; margin-right: 10%;">Brian Okken - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a>-Podcast-Moderator</strong> <a href="https://x.com/brianokken/status/1112220079972728832" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Brian Okken <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a> Podcast-Host</strong> <a href="https://x.com/brianokken/status/1112220079972728832" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_Ehrlich gesagt, was Sie gebaut haben, wirkt super solide und gepflegt. In vielerlei Hinsicht ist es das, was ich mir für **Hug** gewünscht habe – es ist wirklich inspirierend zu sehen, dass jemand das baut._“ „_Ehrlich, was Du gebaut hast, sieht super solide und poliert aus. In vielerlei Hinsicht ist es so, wie ich **Hug** haben wollte – es ist wirklich inspirierend, jemanden so etwas bauen zu sehen._“
<div style="text-align: right; margin-right: 10%;">Timothy Crosley - <strong><a href="https://github.com/hugapi/hug" target="_blank">Hug</a>-Ersteller</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Timothy Crosley <strong><a href="https://github.com/hugapi/hug" target="_blank">Hug</a>-Autor</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_Wenn Sie ein **modernes Framework** zum Erstellen von REST-APIs lernen möchten, schauen Sie sich **FastAPI** an [...] Es ist schnell, einfach zu verwenden und leicht zu lernen [...]_“ „_Wenn Sie ein **modernes Framework** zum Erstellen von REST-APIs erlernen möchten, schauen Sie sich **FastAPI** an. [...] Es ist schnell, einfach zu verwenden und leicht zu lernen [...]_“
„_Wir sind für unsere **APIs** auf **FastAPI** umgestiegen [...] Ich denke, es wird Ihnen gefallen [...]_“ „_Wir haben zu **FastAPI** für unsere **APIs** gewechselt [...] Ich denke, es wird Ihnen gefallen [...]_“
<div style="text-align: right; margin-right: 10%;">Ines Montani - Matthew Honnibal - <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a>-Gründer – <a href="https://spacy.io" target="_blank">spaCy</a>-Ersteller</strong> <a href="https://x.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(Ref.)</small></a> - <a href="https://x.com/honnibal/status/1144031421859655680" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Ines Montani – Matthew Honnibal – <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a>-Gründer – <a href="https://spacy.io" target="_blank">spaCy</a>-Autoren</strong> <a href="https://x.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(Ref)</small></a> <a href="https://x.com/honnibal/status/1144031421859655680" target="_blank"><small>(Ref)</small></a></div>
--- ---
„_Wenn jemand eine produktionsreife Python-API bauen möchte, würde ich **FastAPI** sehr empfehlen. Es ist **wunderschön entworfen**, **einfach zu benutzen** und **hoch skalierbar**, es ist zu einer **Schlüsselkomponente** unserer API-First-Entwicklungsstrategie geworden und treibt viele Automatisierungen und Services an, wie unseren Virtual TAC Engineer._“ „_Falls irgendjemand eine Produktions-Python-API erstellen möchte, kann ich **FastAPI** wärmstens empfehlen. Es ist **wunderschön konzipiert**, **einfach zu verwenden** und **hoch skalierbar**; es ist zu einer **Schlüsselkomponente** unserer API-First-Entwicklungsstrategie geworden und treibt viele Automatisierungen und Services an, wie etwa unseren Virtual TAC Engineer._“
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/" target="_blank"><small>(Ref.)</small></a></div> <div style="text-align: right; margin-right: 10%;">Deon Pillsbury <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/" target="_blank"><small>(Ref)</small></a></div>
--- ---
@ -115,16 +115,16 @@ Die wichtigsten Features:
<a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a> <a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
Wenn Sie eine <abbr title="Command Line Interface – Kommandozeileninterface">CLI</abbr>-App bauen, die im Terminal statt als Web-API verwendet wird, sehen Sie sich <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a> an. Wenn Sie eine <abbr title="Command Line Interface – Kommandozeilen-Schnittstelle">CLI</abbr>-Anwendung für das Terminal erstellen, anstelle einer Web-API, schauen Sie sich <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a> an.
**Typer** ist FastAPIs kleiner Bruder. Und es soll das **FastAPI der CLIs** sein. ⌨️ 🚀 **Typer** ist die kleine Schwester von FastAPI. Und es soll das **FastAPI der CLIs** sein. ⌨️ 🚀
## Voraussetzungen { #requirements } ## Anforderungen { #requirements }
FastAPI steht auf den Schultern von Giganten: FastAPI steht auf den Schultern von Giganten:
* <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> für die Web-Teile. * <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> für die Webanteile.
* <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> für die Daten-Teile. * <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> für die Datenanteile.
## Installation { #installation } ## Installation { #installation }
@ -144,7 +144,7 @@ $ pip install "fastapi[standard]"
## Beispiel { #example } ## Beispiel { #example }
### Erstellen { #create-it } ### Erstellung { #create-it }
Erstellen Sie eine Datei `main.py` mit: Erstellen Sie eine Datei `main.py` mit:
@ -167,9 +167,9 @@ def read_item(item_id: int, q: Union[str, None] = None):
``` ```
<details markdown="1"> <details markdown="1">
<summary>Oder <code>async def</code> verwenden ...</summary> <summary>Oder verwenden Sie <code>async def</code> ...</summary>
Wenn Ihr Code `async` / `await` verwendet, nutzen Sie `async def`: Wenn Ihr Code `async` / `await` verwendet, benutzen Sie `async def`:
```Python hl_lines="9 14" ```Python hl_lines="9 14"
from typing import Union from typing import Union
@ -191,11 +191,11 @@ async def read_item(item_id: int, q: Union[str, None] = None):
**Hinweis**: **Hinweis**:
Wenn Sie es nicht wissen, sehen Sie sich den Abschnitt „In Eile?“ über <a href="https://fastapi.tiangolo.com/de/async/#in-a-hurry" target="_blank">`async` und `await` in der Dokumentation</a> an. Wenn Sie das nicht kennen, schauen Sie sich den Abschnitt _„In Eile?“_ über <a href="https://fastapi.tiangolo.com/de/async/#in-a-hurry" target="_blank">`async` und `await` in der Dokumentation</a> an.
</details> </details>
### Ausführen { #run-it } ### Starten { #run-it }
Starten Sie den Server mit: Starten Sie den Server mit:
@ -227,36 +227,36 @@ INFO: Application startup complete.
</div> </div>
<details markdown="1"> <details markdown="1">
<summary>Über den Befehl <code>fastapi dev main.py</code> ...</summary> <summary>Was der Befehl <code>fastapi dev main.py</code> macht ...</summary>
Der Befehl `fastapi dev` liest Ihre Datei `main.py`, erkennt die **FastAPI**-App darin und startet einen Server mit <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a>. Der Befehl `fastapi dev` liest Ihre `main.py`-Datei, erkennt die **FastAPI**-App darin und startet einen Server mit <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a>.
Standardmäßig startet `fastapi dev` mit aktiviertem Auto-Reload für lokale Entwicklung. Standardmäßig wird `fastapi dev` mit aktiviertem Auto-Reload für die lokale Entwicklung gestartet.
Mehr dazu in der <a href="https://fastapi.tiangolo.com/de/fastapi-cli/" target="_blank">FastAPI-CLI-Dokumentation</a>. Sie können mehr darüber in der <a href="https://fastapi.tiangolo.com/de/fastapi-cli/" target="_blank">FastAPI CLI Dokumentation</a> lesen.
</details> </details>
### Prüfen { #check-it } ### Es testen { #check-it }
Öffnen Sie Ihren Browser unter <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a>. Öffnen Sie Ihren Browser unter <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a>.
Sie sehen die JSON-Response: Sie sehen die JSON-<abbr title="Response – Antwort: Daten, die der Server zum anfragenden Client zurücksendet">Response</abbr> als:
```JSON ```JSON
{"item_id": 5, "q": "somequery"} {"item_id": 5, "q": "somequery"}
``` ```
Sie haben bereits eine API erstellt, die: Sie haben bereits eine API erstellt, welche:
* HTTP-Requests in den _Pfade(n)_ `/` und `/items/{item_id}` empfängt. * HTTP-<abbr title="Request – Anfrage: Daten, die der Client zum Server sendet">Requests</abbr> auf den _Pfaden_ `/` und `/items/{item_id}` entgegennimmt.
* Beide _Pfade_ nehmen `GET`-<em>Operationen</em> (auch bekannt als HTTP-_Methoden_) an. * Beide _Pfade_ nehmen `GET` <em>Operationen</em> (auch bekannt als HTTP-_Methoden_) entgegen.
* Der _Pfad_ `/items/{item_id}` hat einen _Pfad-Parameter_ `item_id`, der ein `int` sein sollte. * Der _Pfad_ `/items/{item_id}` hat einen _Pfad-Parameter_ `item_id`, der ein `int` sein sollte.
* Der _Pfad_ `/items/{item_id}` hat einen optionalen `str`-_Query-Parameter_ `q`. * Der _Pfad_ `/items/{item_id}` hat einen optionalen `str`-_Query-Parameter_ `q`.
### Interaktive API-Dokumentation { #interactive-api-docs } ### Interaktive API-Dokumentation { #interactive-api-docs }
Gehen Sie jetzt zu <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>. Gehen Sie nun auf <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
Sie sehen die automatische interaktive API-Dokumentation (bereitgestellt von <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>): Sie sehen die automatische interaktive API-Dokumentation (bereitgestellt von <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>):
@ -264,15 +264,15 @@ Sie sehen die automatische interaktive API-Dokumentation (bereitgestellt von <a
### Alternative API-Dokumentation { #alternative-api-docs } ### Alternative API-Dokumentation { #alternative-api-docs }
Und jetzt gehen Sie zu <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>. Und jetzt gehen Sie auf <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>.
Sie sehen die alternative automatische Dokumentation (bereitgestellt von <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>): Sie sehen die alternative automatische Dokumentation (bereitgestellt von <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
## Beispiel aktualisieren { #example-upgrade } ## Beispiel Aktualisierung { #example-upgrade }
Ändern Sie nun die Datei `main.py`, um einen Body von einem `PUT`-Request zu empfangen. Ändern Sie jetzt die Datei `main.py`, um den <abbr title="Body – Körper, Inhalt: Der eigentliche Inhalt einer Nachricht, nicht die Metadaten">Body</abbr> eines `PUT`-Requests zu empfangen.
Deklarieren Sie den Body mit Standard-Python-Typen, dank Pydantic. Deklarieren Sie den Body mit Standard-Python-Typen, dank Pydantic.
@ -310,37 +310,37 @@ Der `fastapi dev`-Server sollte automatisch neu laden.
### Interaktive API-Dokumentation aktualisieren { #interactive-api-docs-upgrade } ### Interaktive API-Dokumentation aktualisieren { #interactive-api-docs-upgrade }
Gehen Sie jetzt zu <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>. Gehen Sie jetzt auf <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
* Die interaktive API-Dokumentation wird automatisch aktualisiert, einschließlich des neuen Bodys: * Die interaktive API-Dokumentation wird automatisch aktualisiert, einschließlich des neuen Bodys:
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
* Klicken Sie auf die Schaltfläche „Try it out“, damit können Sie die Parameter ausfüllen und direkt mit der API interagieren: * Klicken Sie auf den Button „Try it out“, damit können Sie die Parameter ausfüllen und direkt mit der API interagieren:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) ![Swagger UI Interaktion](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png)
* Klicken Sie dann auf die Schaltfläche „Execute“, die Benutzeroberfläche kommuniziert mit Ihrer API, sendet die Parameter, erhält die Ergebnisse und zeigt sie auf dem Bildschirm an: * Klicken Sie dann auf den Button „Execute“, die Benutzeroberfläche wird mit Ihrer API kommunizieren, sendet die Parameter, holt die Ergebnisse und zeigt sie auf dem Bildschirm an:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) ![Swagger UI Interaktion](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png)
### Alternative API-Dokumentation aktualisieren { #alternative-api-docs-upgrade } ### Alternative API-Dokumentation aktualisieren { #alternative-api-docs-upgrade }
Und jetzt gehen Sie zu <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>. Und jetzt gehen Sie auf <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>.
* Die alternative Dokumentation spiegelt ebenfalls den neuen Query-Parameter und den Body wider: * Die alternative Dokumentation wird ebenfalls den neuen Query-Parameter und Body widerspiegeln:
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
### Zusammenfassung { #recap } ### Zusammenfassung { #recap }
Kurz gesagt, Sie deklarieren **einmal** die Typen von Parametern, Body, usw. als Funktionsparameter. Zusammengefasst deklarieren Sie **einmal** die Typen von Parametern, Body, usw. als Funktionsparameter.
Sie tun das mit modernen Standard-Python-Typen. Das machen Sie mit modernen Standard-Python-Typen.
Sie müssen keine neue Syntax, Methoden oder Klassen einer bestimmten Bibliothek, usw. lernen. Sie müssen keine neue Syntax, Methoden oder Klassen einer bestimmten Bibliothek usw. lernen.
Einfach Standard-**Python**. Nur Standard-**Python**.
Zum Beispiel für ein `int`: Zum Beispiel für ein `int`:
@ -357,12 +357,12 @@ item: Item
... und mit dieser einen Deklaration erhalten Sie: ... und mit dieser einen Deklaration erhalten Sie:
* Editor-Unterstützung, einschließlich: * Editor-Unterstützung, einschließlich:
* Completion. * Code-Vervollständigung.
* Typprüfungen. * Typprüfungen.
* Validierung von Daten: * Validierung von Daten:
* Automatische und klare Fehler, wenn die Daten ungültig sind. * Automatische und eindeutige Fehler, wenn die Daten ungültig sind.
* Validierung sogar für tief verschachtelte JSON-Objekte. * Validierung sogar für tief verschachtelte JSON-Objekte.
* <abbr title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Eingabedaten: vom Netzwerk zu Python-Daten und -Typen. Lesen aus: * <abbr title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Eingabedaten: Aus dem Netzwerk kommend, zu Python-Daten und -Typen. Lesen von:
* JSON. * JSON.
* Pfad-Parametern. * Pfad-Parametern.
* Query-Parametern. * Query-Parametern.
@ -370,42 +370,42 @@ item: Item
* Headern. * Headern.
* Formularen. * Formularen.
* Dateien. * Dateien.
* <abbr title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Ausgabedaten: Umwandeln von Python-Daten und -Typen in Netzwerkdaten (als JSON): * <abbr title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Ausgabedaten: Konvertierung von Python-Daten und -Typen zu Netzwerkdaten (als JSON):
* Python-Typen konvertieren (`str`, `int`, `float`, `bool`, `list`, usw.). * Konvertieren von Python-Typen (`str`, `int`, `float`, `bool`, `list`, usw.).
* `datetime`-Objekte. * `datetime`-Objekte.
* `UUID`-Objekte. * `UUID`-Objekte.
* Datenbankmodelle. * Datenbankmodelle.
* ... und viele mehr. * ... und viele mehr.
* Automatische interaktive API-Dokumentation, inklusive 2 alternativen Benutzeroberflächen: * Automatische interaktive API-Dokumentation, einschließlich zwei alternativer Benutzeroberflächen:
* Swagger UI. * Swagger UI.
* ReDoc. * ReDoc.
--- ---
Zurück zum vorherigen Codebeispiel – **FastAPI** wird: Um auf das vorherige Codebeispiel zurückzukommen, **FastAPI** wird:
* Validieren, dass es einen `item_id` im Pfad für `GET`- und `PUT`-Requests gibt. * Validieren, dass es eine `item_id` im Pfad für `GET`- und `PUT`-Requests gibt.
* Validieren, dass der `item_id` vom Typ `int` ist für `GET`- und `PUT`-Requests. * Validieren, ob die `item_id` vom Typ `int` für `GET`- und `PUT`-Requests ist.
* Falls nicht, sieht der Client einen hilfreichen, klaren Fehler. * Falls nicht, sieht der Client einen hilfreichen, klaren Fehler.
* Prüfen, ob es für `GET`-Requests einen optionalen Query-Parameter namens `q` gibt (wie in `http://127.0.0.1:8000/items/foo?q=somequery`). * Prüfen, ob es einen optionalen Query-Parameter namens `q` (wie in `http://127.0.0.1:8000/items/foo?q=somequery`) für `GET`-Requests gibt.
* Da der Parameter `q` mit `= None` deklariert ist, ist er optional. * Da der `q`-Parameter mit `= None` deklariert ist, ist er optional.
* Ohne das `None` wäre er erforderlich (so wie der Body im Fall von `PUT`). * Ohne das `None` wäre er erforderlich (wie der Body im Fall von `PUT`).
* Für `PUT`-Requests auf `/items/{item_id}` den Body als JSON lesen: * Bei `PUT`-Requests an `/items/{item_id}` den Body als JSON lesen:
* Prüfen, dass er ein erforderliches Attribut `name` hat, das ein `str` sein sollte. * Prüfen, ob er ein erforderliches Attribut `name` hat, das ein `str` sein muss.
* Prüfen, dass er ein erforderliches Attribut `price` hat, das ein `float` sein muss. * Prüfen, ob er ein erforderliches Attribut `price` hat, das ein `float` sein muss.
* Prüfen, dass er ein optionales Attribut `is_offer` hat, das ein `bool` sein sollte, falls vorhanden. * Prüfen, ob er ein optionales Attribut `is_offer` hat, das ein `bool` sein muss, falls vorhanden.
* All dies funktioniert auch für tief verschachtelte JSON-Objekte. * All dies würde auch für tief verschachtelte JSON-Objekte funktionieren.
* Automatisch von und nach JSON konvertieren. * Automatisch von und nach JSON konvertieren.
* Alles mit OpenAPI dokumentieren, das verwendet werden kann von: * Alles mit OpenAPI dokumentieren, welches verwendet werden kann von:
* Interaktiven Dokumentationssystemen. * Interaktiven Dokumentationssystemen.
* Systemen zur automatischen Client-Code-Generierung, für viele Sprachen. * Automatisch Client-Code generierenden Systemen für viele Sprachen.
* Direkt 2 interaktive Dokumentations-Weboberflächen bereitstellen. * Zwei interaktive Dokumentations-Weboberflächen direkt bereitstellen.
--- ---
Wir haben hier nur an der Oberfläche gekratzt, aber Sie bekommen bereits eine Vorstellung davon, wie alles funktioniert. Wir haben nur an der Oberfläche gekratzt, aber Sie bekommen schon eine Vorstellung davon, wie das Ganze funktioniert.
Versuchen Sie, die Zeile zu ändern: Versuchen Sie, diese Zeile zu ändern:
```Python ```Python
return {"item_name": item.name, "item_id": item_id} return {"item_name": item.name, "item_id": item_id}
@ -425,19 +425,19 @@ Versuchen Sie, die Zeile zu ändern:
... und sehen Sie, wie Ihr Editor die Attribute automatisch vervollständigt und ihre Typen kennt: ... und sehen Sie, wie Ihr Editor die Attribute automatisch vervollständigt und ihre Typen kennt:
![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) ![Editor Unterstützung](https://fastapi.tiangolo.com/img/vscode-completion.png)
Ein vollständigeres Beispiel mit mehr Features finden Sie im <a href="https://fastapi.tiangolo.com/de/tutorial/">das Tutorial – Benutzerhandbuch</a>. Für ein vollständigeres Beispiel, mit weiteren Funktionen, siehe das <a href="https://fastapi.tiangolo.com/de/tutorial/">Tutorial – Benutzerhandbuch</a>.
**Spoilerwarnung**: das Tutorial – Benutzerhandbuch umfasst: **Spoiler-Alarm**: Das Tutorial – Benutzerhandbuch enthält:
* Deklaration von **Parametern** aus verschiedenen Quellen wie: **Header**, **Cookies**, **Formularfelder** und **Dateien**. * Deklaration von **Parametern** von anderen verschiedenen Stellen wie: **Header**, **Cookies**, **Formularfelder** und **Dateien**.
* Wie **Validierungs-Constraints** wie `maximum_length` oder `regex` gesetzt werden. * Wie man **Validierungs-Constraints** wie `maximum_length` oder `regex` setzt.
* Ein sehr mächtiges und leicht zu nutzendes System für **<abbr title="auch bekannt als: Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</abbr>**. * Ein sehr leistungsfähiges und einfach zu bedienendes System für **<abbr title="Dependency Injection – Einbringen von Abhängigkeiten: Auch bekannt als Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</abbr>**.
* Security und Authentifizierung, inklusive Support für **OAuth2** mit **JWT-Token** und **HTTP Basic**-Auth. * Sicherheit und Authentifizierung, einschließlich Unterstützung für **OAuth2** mit **JWT-Tokens** und **HTTP Basic** Authentifizierung.
* Fortgeschrittene (aber ebenso einfache) Techniken für die Deklaration **tief verschachtelter JSON-Modelle** (dank Pydantic). * Fortgeschrittenere (aber ebenso einfache) Techniken zur Deklaration **tief verschachtelter JSON-Modelle** (dank Pydantic).
* **GraphQL**-Integration mit <a href="https://strawberry.rocks" class="external-link" target="_blank">Strawberry</a> und anderen Bibliotheken. * **GraphQL**-Integration mit <a href="https://strawberry.rocks" class="external-link" target="_blank">Strawberry</a> und anderen Bibliotheken.
* Viele zusätzliche Features (dank Starlette), wie: * Viele zusätzliche Features (dank Starlette) wie:
* **WebSockets** * **WebSockets**
* extrem einfache Tests auf Basis von HTTPX und `pytest` * extrem einfache Tests auf Basis von HTTPX und `pytest`
* **CORS** * **CORS**
@ -446,9 +446,9 @@ Ein vollständigeres Beispiel mit mehr Features finden Sie im <a href="https://f
## Performanz { #performance } ## Performanz { #performance }
Unabhängige TechEmpower-Benchmarks zeigen, dass **FastAPI**-Anwendungen unter Uvicorn als <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">eines der schnellsten verfügbaren Python-Frameworks</a> laufen, nur unterhalb von Starlette und Uvicorn selbst (intern von FastAPI verwendet). (*) Unabhängige TechEmpower-Benchmarks zeigen **FastAPI**-Anwendungen, die unter Uvicorn laufen, als <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">eines der schnellsten verfügbaren Python-Frameworks</a>, nur hinter Starlette und Uvicorn selbst (intern von FastAPI verwendet). (*)
Um mehr darüber zu verstehen, sehen Sie den Abschnitt <a href="https://fastapi.tiangolo.com/de/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>. Um mehr darüber zu erfahren, siehe den Abschnitt <a href="https://fastapi.tiangolo.com/de/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>.
## Abhängigkeiten { #dependencies } ## Abhängigkeiten { #dependencies }
@ -464,19 +464,19 @@ Verwendet von Pydantic:
Verwendet von Starlette: Verwendet von Starlette:
* <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a>Erforderlich, wenn Sie den `TestClient` verwenden möchten. * <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a>erforderlich, wenn Sie den `TestClient` verwenden möchten.
* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a>Erforderlich, wenn Sie die Default-Template-Konfiguration verwenden möchten. * <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a>erforderlich, wenn Sie die Default-Template-Konfiguration verwenden möchten.
* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a>Erforderlich, wenn Sie Formular-<abbr title="Konvertieren des Strings eines HTTP-Requests in Python-Daten">„parsing</abbr> mit `request.form()` unterstützen möchten. * <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a>erforderlich, wenn Sie Formulare mittels `request.form()` <abbr title="Konvertieren des Strings, der aus einem HTTP-Request stammt, nach Python-Daten">„parsen</abbr> möchten.
Verwendet von FastAPI: Verwendet von FastAPI:
* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> – für den Server, der Ihre Anwendung lädt und bereitstellt. Dies umfasst `uvicorn[standard]`, das einige Abhängigkeiten (z. B. `uvloop`) beinhaltet, die für eine Bereitstellung mit hoher Performanz benötigt werden. * <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> – für den Server, der Ihre Anwendung lädt und bereitstellt. Dies umfasst `uvicorn[standard]`, das einige Abhängigkeiten (z. B. `uvloop`) beinhaltet, die für eine Bereitstellung mit hoher Performanz benötigt werden.
* `fastapi-cli[standard]` – um den Befehl `fastapi` bereitzustellen. * `fastapi-cli[standard]` – um den `fastapi`-Befehl bereitzustellen.
* Dies umfasst `fastapi-cloud-cli`, womit Sie Ihre FastAPI-Anwendung auf <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a> deployen können. * Dies beinhaltet `fastapi-cloud-cli`, das es Ihnen ermöglicht, Ihre FastAPI-Anwendung auf <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a> bereitzustellen.
### Ohne `standard`-Abhängigkeiten { #without-standard-dependencies } ### Ohne `standard`-Abhängigkeiten { #without-standard-dependencies }
Wenn Sie die optionalen `standard`-Abhängigkeiten nicht einschließen möchten, können Sie mit `pip install fastapi` statt `pip install "fastapi[standard]"` installieren. Wenn Sie die `standard` optionalen Abhängigkeiten nicht einschließen möchten, können Sie mit `pip install fastapi` statt `pip install "fastapi[standard]"` installieren.
### Ohne `fastapi-cloud-cli` { #without-fastapi-cloud-cli } ### Ohne `fastapi-cloud-cli` { #without-fastapi-cloud-cli }
@ -488,13 +488,13 @@ Es gibt einige zusätzliche Abhängigkeiten, die Sie installieren möchten.
Zusätzliche optionale Pydantic-Abhängigkeiten: Zusätzliche optionale Pydantic-Abhängigkeiten:
* <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> – für Settings-Management. * <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> – für die Verwaltung von Einstellungen.
* <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> – für zusätzliche Typen zur Verwendung mit Pydantic. * <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> – für zusätzliche Typen zur Verwendung mit Pydantic.
Zusätzliche optionale FastAPI-Abhängigkeiten: Zusätzliche optionale FastAPI-Abhängigkeiten:
* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a>Erforderlich, wenn Sie `ORJSONResponse` verwenden möchten. * <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a>erforderlich, wenn Sie `ORJSONResponse` verwenden möchten.
* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a>Erforderlich, wenn Sie `UJSONResponse` verwenden möchten. * <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a>erforderlich, wenn Sie `UJSONResponse` verwenden möchten.
## Lizenz { #license } ## Lizenz { #license }

Loading…
Cancel
Save