Starting with this commit and in the remaining two folders, I translate the documents in the order they appear in the documentation. Should have done that from the beginning, as it helps the LLM learning things (I guess).
**FastAPI** hat ein sehr mächtiges, aber intuitives **<abbrtitle="Dependency Injection – Einbringen von Abhängigkeiten: Auch bekannt als Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</abbr>** System.
**FastAPI** hat ein sehr mächtiges, aber intuitives **<abbrtitle="Einbringen von Abhängigkeiten: auch bekannt als Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</abbr>** System.
Es ist so konzipiert, sehr einfach zu verwenden zu sein und es jedem Entwickler sehr leicht zu machen, andere Komponenten mit **FastAPI** zu integrieren.
## Was ist „Dependency Injection“
## Was ist „Dependency Injection“ { #what-is-dependency-injection }
**„Dependency Injection“** bedeutet in der Programmierung, dass es für Ihren Code (in diesem Fall Ihre *Pfadoperation-Funktionen*) eine Möglichkeit gibt, Dinge zu deklarieren, die er verwenden möchte und die er zum Funktionieren benötigt: „Abhängigkeiten“ – „Dependencies“.
@ -19,13 +19,13 @@ Das ist sehr nützlich, wenn Sie:
All dies, während Sie Codeverdoppelung minimieren.
## Erste Schritte
## Erste Schritte { #first-steps }
Sehen wir uns ein sehr einfaches Beispiel an. Es ist so einfach, dass es vorerst nicht sehr nützlich ist.
Aber so können wir uns besser auf die Funktionsweise des **Dependency Injection** Systems konzentrieren.
### Erstellen Sie eine Abhängigkeit (<abbrtitle="Das von dem abhängt, die zu verwendende Abhängigkeit">„Dependable“</abbr>)
### Eine Abhängigkeit erstellen, oder <abbrtitle="Das von dem abhängt, die zu verwendende Abhängigkeit">„Dependable“</abbr> { #create-a-dependency-or-dependable }
Konzentrieren wir uns zunächst auf die Abhängigkeit - die Dependency.
@ -50,21 +50,21 @@ In diesem Fall erwartet diese Abhängigkeit:
Und dann wird einfach ein `dict` zurückgegeben, welches diese Werte enthält.
/// info
/// info | Info
FastAPI unterstützt (und empfiehlt die Verwendung von) `Annotated` seit Version 0.95.0.
Wenn Sie eine ältere Version haben, werden Sie Fehler angezeigt bekommen, wenn Sie versuchen, `Annotated` zu verwenden.
Bitte [aktualisieren Sie FastAPI](../../deployment/versions.md#upgrade-der-fastapi-versionen){.internal-link target=_blank} daher mindestens zu Version 0.95.1, bevor Sie `Annotated` verwenden.
Bitte [aktualisieren Sie FastAPI](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} daher mindestens zu Version 0.95.1, bevor Sie `Annotated` verwenden.
### Deklarieren der Abhängigkeit im <abbrtitle="Das Abhängige, der Verwender der Abhängigkeit">„Dependant“</abbr>
### Die Abhängigkeit im <abbrtitle="Das Abhängige, der Verwender der Abhängigkeit">„Dependant“</abbr> deklarieren { #declare-the-dependency-in-the-dependant }
So wie auch `Body`, `Query`, usw., verwenden Sie `Depends` mit den Parametern Ihrer *Pfadoperation-Funktion*:
In den Beispielen oben sehen Sie, dass es ein kleines bisschen **Codeverdoppelung** gibt.
@ -139,7 +139,7 @@ Die Abhängigkeiten funktionieren weiterhin wie erwartet, und das **Beste daran*
Das ist besonders nützlich, wenn Sie es in einer **großen Codebasis** verwenden, in der Sie in **vielen *Pfadoperationen*** immer wieder **dieselben Abhängigkeiten** verwenden.
## `async` oder nicht `async`
## `async` oder nicht `async` { #to-async-or-not-to-async }
Da Abhängigkeiten auch von **FastAPI** aufgerufen werden (so wie Ihre *Pfadoperation-Funktionen*), gelten beim Definieren Ihrer Funktionen die gleichen Regeln.
@ -151,11 +151,11 @@ Es spielt keine Rolle. **FastAPI** weiß, was zu tun ist.
/// note | Hinweis
Wenn Ihnen das nichts sagt, lesen Sie den [Async: *„In Eile?“*](../../async.md#in-eile){.internal-link target=_blank}-Abschnitt über `async` und `await` in der Dokumentation.
Wenn Ihnen das nichts sagt, lesen Sie den [Async: *„In Eile?“*](../../async.md#in-a-hurry){.internal-link target=_blank}-Abschnitt über `async` und `await` in der Dokumentation.
///
## Integriert in OpenAPI
## Integriert in OpenAPI { #integrated-with-openapi }
Alle Requestdeklarationen, -validierungen und -anforderungen Ihrer Abhängigkeiten (und Unterabhängigkeiten) werden in dasselbe OpenAPI-Schema integriert.
@ -163,7 +163,7 @@ Die interaktive Dokumentation enthält also auch alle Informationen aus diesen A
<imgsrc="/img/tutorial/dependencies/image01.png">
## Einfache Verwendung
## Einfache Verwendung { #simple-usage }
Näher betrachtet, werden *Pfadoperation-Funktionen* deklariert, um verwendet zu werden, wann immer ein *Pfad* und eine *Operation* übereinstimmen, und dann kümmert sich **FastAPI** darum, die Funktion mit den richtigen Parametern aufzurufen, die Daten aus der Anfrage extrahierend.
@ -181,7 +181,7 @@ Andere gebräuchliche Begriffe für dieselbe Idee der „Abhängigkeitsinjektion
* Injectables
* Komponenten
## **FastAPI**-Plugins
## **FastAPI**-Plugins { #fastapi-plug-ins }
Integrationen und „Plugins“ können mit dem **Dependency Injection** System erstellt werden. Aber tatsächlich besteht **keine Notwendigkeit, „Plugins“ zu erstellen**, da es durch die Verwendung von Abhängigkeiten möglich ist, eine unendliche Anzahl von Integrationen und Interaktionen zu deklarieren, die dann für Ihre *Pfadoperation-Funktionen* verfügbar sind.
@ -189,7 +189,7 @@ Und Abhängigkeiten können auf sehr einfache und intuitive Weise erstellt werde
Beispiele hierfür finden Sie in den nächsten Kapiteln zu relationalen und NoSQL-Datenbanken, Sicherheit usw.
<abbrtitle="auch bekannt als: Endpunkte, Routen">Pfad</abbr>
<abbrtitle="Programm das auf Fehler im Code prüft">Linter</abbr>
<abbrtitle="Konvertieren des Strings eines HTTP-Requests in Python-Daten">„Parsing“</abbr>
<abbrtitle="Konvertieren des Strings eines HTTP-Requests in Python-Daten">„Parsen“</abbr>
<abbrtitle="vor 2023-03">0.95.0</abbr>
<abbrtitle="2023-08-26">zum Zeitpunkt als das hier geschrieben wurde</abbr>
@ -119,6 +119,29 @@ Result (German):
{translation of explanation}
If the term, which the HTML abbr element wraps, stays English in the translation, but it also has a translation, whose knowledge improves the explanation, then let the title attribute be that translation, followed by a colon (`:`), followed by the translation of the title attribute.
Examples:
Source (English):
<abbrtitle="also known as components, resources, providers, services, injectables">Dependency Injection</abbr>
Result (German):
<abbrtitle="Einbringen von Abhängigkeiten: auch bekannt als Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</abbr>
Conversion scheme title attribute:
Source (English):
{explanation}
Result (German):
{translation of term which abbr wraps}: {translation of explanation}
4.3) If the title attribute gives the full phrase for an abbrevation, followed by a colon (`:`) or a comma (`,`), followed by an explanation, then keep the phrase, append a long dash (`–`), followed by the translation of the phrase, followed by a colon (`:`), followed by the translation of the explanation.
Examples:
@ -252,6 +275,7 @@ Ich versuche nicht, alles einzudeutschen. Das bezieht sich besonders auf Begriff