@ -10,7 +10,7 @@ Wenn Sie neben dem Hauptstatuscode weitere Statuscodes zurückgeben möchten, k
Angenommen, Sie möchten eine *Pfadoperation* haben, die das Aktualisieren von Artikeln ermöglicht und bei Erfolg den HTTP-Statuscode 200 „OK“ zurückgibt.
Sie möchten aber auch, dass sie neue Artikel akzeptiert. Und wenn die Elemente vorher nicht vorhanden waren, werden diese Elemente erstellt und der HTTP-Statuscode 201 „Created“ zurückgegeben.
Sie möchten aber auch, dass sie neue Artikel akzeptiert. Und wenn die Artikel vorher nicht vorhanden waren, werden diese Artikel erstellt und der HTTP-Statuscode 201 „Created“ zurückgegeben.
Um dies zu erreichen, importieren Sie `JSONResponse`, und geben Sie Ihren Inhalt direkt zurück, indem Sie den gewünschten `status_code` setzen:
@ -186,7 +186,7 @@ In vielen Fällen möchten Sie jedoch mehrere Workerprozesse gleichzeitig ausfü
Wenn Sie mehr Clients haben, als ein einzelner Prozess verarbeiten kann (z. B. wenn die virtuelle Maschine nicht sehr groß ist) und die CPU des Servers **mehrere Kerne** hat, dann könnten **mehrere Prozesse** gleichzeitig mit derselben Anwendung laufen und alle Requests unter sich verteilen.
Wenn Sie mit **mehreren Prozessen** dasselbe API-Programm ausführen, werden diese üblicherweise als <abbrtitle="Arbeiter">**Worker**</abbr> bezeichnet.
Wenn Sie mit **mehreren Prozessen** dasselbe API-Programm ausführen, werden diese üblicherweise als **<abbrtitle="Arbeiter">Worker</abbr>** bezeichnet.
### Workerprozesse und Ports { #worker-processes-and-ports }
@ -116,7 +116,7 @@ In vielen Fällen wird nur ein Fragment des Codes gepostet, aber das reicht nich
### Um Schließung bitten { #ask-to-close }
Wenn sie antworten, besteht eine hohe Chance, dass Sie ihr Problem gelöst haben. Herzlichen Glückwunsch, **Sie sind ein Held**! 🦸
Wenn die Person antwortet, besteht eine hohe Chance, dass Sie ihr Problem gelöst haben. Herzlichen Glückwunsch, **Sie sind ein Held**! 🦸
* Wenn es tatsächlich das Problem gelöst hat, können Sie sie darum bitten:
@ -223,7 +223,7 @@ Die Hauptaufgaben, die Sie jetzt erledigen können, sind:
Diese beiden Aufgaben sind die Dinge, die **am meisten Zeit verbrauchen**. Das ist die Hauptarbeit bei der Wartung von FastAPI.
Wenn Sie mir dabei helfen können, **helfen Sie mir, FastAPI zu pflegen** und stellen sicher, dass es weiterhin **schneller und besser voranschreitet**. 🚀
Wenn Sie mir dabei helfen können, **helfen Sie mir, FastAPI zu pflegen** und Sie stellen sicher, dass es weiterhin **schneller und besser voranschreitet**. 🚀
@ -29,8 +29,8 @@ Sie können die internen Funktionen von FastAPI wiederverwenden, um die HTML-Sei
* `openapi_url`: die URL, unter welcher die HTML-Seite für die Dokumentation das OpenAPI-Schema für Ihre API abrufen kann. Sie können hier das Attribut `app.openapi_url` verwenden.
* `title`: der Titel Ihrer API.
* `oauth2_redirect_url`: Sie können hier `app.swagger_ui_oauth2_redirect_url` verwenden, um die Standardeinstellung zu verwenden.
* `swagger_js_url`: die URL, unter welcher der HTML-Code für Ihre Swagger-UI-Dokumentation die **JavaScript**-Datei abrufen kann. Dies ist die benutzerdefinite CDN-URL.
* `swagger_css_url`: die URL, unter welcher der HTML-Code für Ihre Swagger-UI-Dokumentation die **CSS**-Datei abrufen kann. Dies ist die benutzerdefinite CDN-URL.
* `swagger_js_url`: die URL, unter welcher der HTML-Code für Ihre Swagger-UI-Dokumentation die **JavaScript**-Datei abrufen kann. Dies ist die benutzerdefinierte CDN-URL.
* `swagger_css_url`: die URL, unter welcher der HTML-Code für Ihre Swagger-UI-Dokumentation die **CSS**-Datei abrufen kann. Dies ist die benutzerdefinierte CDN-URL.
Und ähnlich für ReDoc ...
@ -54,7 +54,7 @@ Um nun testen zu können, ob alles funktioniert, erstellen Sie eine *Pfadoperati
### Es testen { #test-it }
Jetzt sollten Sie in der Lage sein, zu Ihrer Dokumentation auf <ahref="http://127.0.0.1:8000/docs"class="external-link"target="_blank">http://127.0.0.1:8000/docs</a> zu gehen und die Seite neu zu laden. Die Assets werden nun vom neuen CDN geladen.
Jetzt sollten Sie in der Lage sein, zu Ihrer Dokumentation auf <ahref="http://127.0.0.1:8000/docs"class="external-link"target="_blank">http://127.0.0.1:8000/docs</a> zu gehen und die Seite neu zu laden, die Assets werden nun vom neuen CDN geladen.
## JavaScript und CSS für die Dokumentation selbst hosten { #self-hosting-javascript-and-css-for-docs }
@ -126,7 +126,7 @@ Starten Sie Ihre Anwendung und gehen Sie auf <a href="http://127.0.0.1:8000/stat
Sie sollten eine sehr lange JavaScript-Datei für **ReDoc** sehen.
Sie könnte mit etwas wie diesem beginnen:
Sie könnte beginnen mit etwas wie:
```JavaScript
/*! For license information please see redoc.standalone.js.LICENSE.txt */
@ -178,7 +178,7 @@ Um nun testen zu können, ob alles funktioniert, erstellen Sie eine *Pfadoperati
### Benutzeroberfläche der statischen Dateien testen { #test-static-files-ui }
### Benutzeroberfläche mit statischen Dateien testen { #test-static-files-ui }
Jetzt sollten Sie in der Lage sein, Ihr WLAN zu trennen, gehen Sie zu Ihrer Dokumentation unter <ahref="http://127.0.0.1:8000/docs"class="external-link"target="_blank">http://127.0.0.1:8000/docs</a> und laden Sie die Seite neu.
* Mit <ahref="https://tartiflette.github.io/tartiflette-asgi/"class="external-link"target="_blank">Tartiflette ASGI</a>zur Bereitstellung der ASGI-Integration
* Mit <ahref="https://tartiflette.github.io/tartiflette-asgi/"class="external-link"target="_blank">Tartiflette ASGI</a>für ASGI-Integration
# Einführung in Python-Typen { #python-types-intro }
Python hat Unterstützung für optionale „Typhinweise“ (auch „Typannotationen“ genannt).
Python hat Unterstützung für optionale <abbrtitle="englisch: Type hints">„Typhinweise“</abbr> (auch <abbrtitle="englisch: Type annotations">„Typannotationen“</abbr> genannt).
Diese **„Typhinweise“** oder -annotationen sind eine spezielle Syntax, die es erlaubt, den <abbrtitle="zum Beispiel: str, int, float, bool">Typ</abbr> einer Variablen zu deklarieren.
@ -32,7 +32,7 @@ Die Beispiele hier verwenden `.dict()` für die Kompatibilität mit Pydantic v1,
### Über `**user_in.dict()` { #about-user-in-dict }
#### Die `.dict()`Methode von Pydantic { #pydantics-dict }
#### Die `.dict()`-Methode von Pydantic { #pydantics-dict }
`user_in` ist ein Pydantic-Modell der Klasse `UserIn`.
@ -158,7 +158,7 @@ Wir könnten es besser machen.
Wir können ein `UserBase`-Modell deklarieren, das als Basis für unsere anderen Modelle dient. Und dann können wir Unterklassen dieses Modells erstellen, die seine Attribute (Typdeklarationen, Validierung usw.) erben.
Die ganze Datenkonvertierung, Validierung, Dokumentation usw. wird immer noch wie gewohnt funktionieren.
Die ganze Datenkonvertierung, -validierung, -dokumentation usw. wird immer noch wie gewohnt funktionieren.
Auf diese Weise können wir nur die Unterschiede zwischen den Modellen (mit Klartext-`password`, mit `hashed_password` und ohne Passwort) deklarieren:
@ -199,7 +199,7 @@ Aber wenn wir das in der Zuweisung `response_model=PlaneItem | CarItem` machen,
Auf die gleiche Weise können Sie Responses von Listen von Objekten deklarieren.
Dafür verwenden Sie das Standard-Python `typing.List` (oder nur `list` in Python 3.9 und höher):
Dafür verwenden Sie Pythons Standard-`typing.List` (oder nur `list` in Python 3.9 und höher):
@ -51,7 +51,7 @@ Wenn der Client `http://example.com/items/foo` anfordert (ein `item_id` `"foo"`)
}
```
Aber wenn der Client `http://example.com/items/bar` anfordert (ein nicht-existierendes `item_id``"bar"`), erhält er einen HTTP-Statuscode 404 (der „not found“Error) und eine JSON-Response wie:
Aber wenn der Client `http://example.com/items/bar` anfordert (ein nicht-existierendes `item_id``"bar"`), erhält er einen HTTP-Statuscode 404 (der „not found“-Error) und eine JSON-Response wie:
```JSON
{
@ -71,7 +71,7 @@ Diese werden von **FastAPI** automatisch gehandhabt und in JSON konvertiert.
Es gibt Situationen, in denen es nützlich ist, dem HTTP-Error benutzerdefinierte Header hinzuzufügen. Zum Beispiel für einige Arten der Sicherheit.
Es gibt Situationen, in denen es nützlich ist, dem HTTP-Error benutzerdefinierte Header hinzuzufügen. Zum Beispiel in einigen Sicherheitsszenarien.
Sie werden es wahrscheinlich nicht direkt in Ihrem Code verwenden müssen.
@ -83,7 +83,7 @@ Aber falls Sie es für ein fortgeschrittenes Szenario benötigen, können Sie be
Sie können benutzerdefinierte <abbrtitle="Ausnahmebehandler: Funktion, die sich um die Bearbeitung einer Exception kümmert">Exceptionhandler</abbr> mit <ahref="https://www.starlette.io/exceptions/"class="external-link"target="_blank">den gleichen Exception-Werkzeugen von Starlette</a> hinzufügen.
Angenommen, Sie haben eine benutzerdefinierte Exception `UnicornException`, die Sie (oder eine Bibliothek, die Sie verwenden) `raise` könnte.
Angenommen, Sie haben eine benutzerdefinierte Exception `UnicornException`, die Sie (oder eine Bibliothek, die Sie verwenden) `raise`n könnten.
Und Sie möchten diese Exception global mit FastAPI handhaben.
@ -95,7 +95,7 @@ Hier, wenn Sie `/unicorns/yolo` anfordern, wird die *Pfadoperation* eine `Unicor
Aber diese wird von `unicorn_exception_handler` gehandhabt.
Sie erhalten also einen sauberen Fehler mit einem HTTP-Statuscode von `418` und einem JSON-Inhalt von:
Sie erhalten also einen sauberen Fehler mit einem HTTP-Statuscode von `418` und dem JSON-Inhalt:
```JSON
{"message": "Oops! yolo did something. There goes a rainbow..."}
@ -113,7 +113,7 @@ Sie könnten auch `from starlette.requests import Request` und `from starlette.r
**FastAPI** hat einige Default-Exceptionhandler.
Diese Handler sind dafür verantwortlich, die standardmäßigen JSON-Responses zurückzugeben, wenn Sie eine `HTTPException``raise`n und wenn die Anfrage ungültige Daten enthält.
Diese Handler sind dafür verantwortlich, die Default-JSON-Responses zurückzugeben, wenn Sie eine `HTTPException``raise`n und wenn der Request ungültige Daten enthält.
Sie können diese Exceptionhandler mit Ihren eigenen überschreiben.
@ -240,7 +240,7 @@ Aber wenn Sie einen Exceptionhandler registrieren, sollten Sie ihn für die `HTT
Auf diese Weise, wenn irgendein Teil des internen Codes von Starlette, oder eine Starlette-Erweiterung oder ein Plug-in, eine Starlette `HTTPException` auslöst, wird Ihr Handler in der Lage sein, diese abzufangen und zu handhaben.
Um in diesem Beispiel beide `HTTPException`s im selben Code zu haben, wird die Exception von Starlette als`StarletteHTTPException` umbenannt:
Um in diesem Beispiel beide `HTTPException`s im selben Code zu haben, wird die Exception von Starlette zu`StarletteHTTPException` umbenannt:
```Python
from starlette.exceptions import HTTPException as StarletteHTTPException
@ -252,4 +252,4 @@ Wenn Sie die Exception zusammen mit den gleichen Default-Exceptionhandlern von *
In diesem Beispiel drucken Sie nur den Fehler mit einer sehr ausdrucksstarken Nachricht aus, aber Sie verstehen das Prinzip. Sie können die Exception verwenden und dann einfach die Default-Exceptionhandler wiederverwenden.
In diesem Beispiel geben Sie nur den Fehler mit einer sehr ausdrucksstarken Nachricht aus, aber Sie verstehen das Prinzip. Sie können die Exception verwenden und dann einfach die Default-Exceptionhandler wiederverwenden.