mirror of https://github.com/vapor/docs.git
Add German Translations (#662)
* Add german translation for some pages * Update search index script * Update the index.de.md to the latest changes Co-authored-by: Mattes Mohr <mail@mattesmohr.de>
This commit is contained in:
parent
d93aaf5562
commit
b5dde9dcae
|
|
@ -0,0 +1,65 @@
|
|||
# Controllers
|
||||
|
||||
Mit Controllers kannst du deinen Code strukturieren und in deinem Projekt für Ordnung sorgen. Ein Controller kann ein oder mehrere Methoden besitzen, die dazu da sind die Anfrage entgegenzunehmen und ein enstprechendes Ergebnis zurückzuliefern.
|
||||
|
||||
## Beispiel
|
||||
|
||||
Das folgende Beispiel zeigt einen möglichen Aufbau eines Controllers:
|
||||
|
||||
```swift
|
||||
/// [TodoController.swift]
|
||||
|
||||
import Vapor
|
||||
|
||||
struct TodosController: RouteCollection {
|
||||
|
||||
/// [1]
|
||||
func index(req: Request) async throws -> String {
|
||||
// ...
|
||||
}
|
||||
|
||||
/// [2]
|
||||
func create(req: Request) throws -> EventLoopFuture<String> {
|
||||
// ...
|
||||
}
|
||||
|
||||
func show(req: Request) throws -> String {
|
||||
guard let id = req.parameters.get("id") else {
|
||||
throw Abort(.internalServerError)
|
||||
}
|
||||
// ...
|
||||
}
|
||||
|
||||
func update(req: Request) throws -> String {
|
||||
// ...
|
||||
}
|
||||
|
||||
func delete(req: Request) throws -> String {
|
||||
// ...
|
||||
}
|
||||
|
||||
func boot(routes: RoutesBuilder) throws {
|
||||
let todos = routes.grouped("todos")
|
||||
todos.get(use: index)
|
||||
todos.post(use: create)
|
||||
|
||||
todos.group(":id") { todo in
|
||||
todo.get(use: show)
|
||||
todo.put(use: update)
|
||||
todo.delete(use: delete)
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Die Methoden sollten immer ein Object vom Typ _Request_ annehmen und ein Wert von Typ _ResponseEncodable_ zurückgegeben. Dabei kann die Methode sowohl asynchron (siehe im Beispiel Punkt [1]), als auch synchron (siehe im Beispiel, Punkt [2]) ausgeführt werden.
|
||||
|
||||
### Register
|
||||
|
||||
Zum Schluss muss der Anwendung noch der Controller in der Datei _routes.swift_ bekannt gemacht werden.
|
||||
|
||||
```swift
|
||||
/// [routes.swift]
|
||||
|
||||
try app.register(collection: TodosController())
|
||||
```
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
# Umgebung
|
||||
|
||||
In Vapor gibt es mehrere Umgebungen mit denen du Einstellungen individuell vordefinieren kannst. Mit dem Wechsel der Umgebung ändert sich dann das Verhalten deiner Anwendung. Du kannst aber auch Werte direkt aus dem aktuellen Prozess abrufen oder aus einer .env-Datei laden.
|
||||
|
||||
| Umgebung | Kurzform | Beschreibung |
|
||||
|-----------------------|------------|---------------------------------------------|
|
||||
| production | prod | Umgebung bei Veröffentlichung. |
|
||||
| development (default) | dev | Umgebung für Entwicklung. |
|
||||
| testing | test | Umgebung zum Testen. |
|
||||
| Vapor nutzt standardmäßig die Umgebung _Development_. |
|
||||
|
||||
## Eigenschaft
|
||||
|
||||
Du kannst über die Eigenschaft _Environment_ auf die laufenden Umgebung zugreifen oder zwischen den Umgebungen wechseln.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
switch app.environment {
|
||||
case .production:
|
||||
app.databases.use(....)
|
||||
default:
|
||||
app.databases.use(...)
|
||||
}
|
||||
```
|
||||
|
||||
## Wechsel
|
||||
|
||||
```swift
|
||||
vapor run serve --env production
|
||||
```
|
||||
|
||||
## Umgebungsvariable
|
||||
|
||||
### Prozess
|
||||
|
||||
#### - Abrufen
|
||||
|
||||
Die Klasse _Environment_ bietet die Methode *get(_: String)* an um einen Wert abzurufen.
|
||||
|
||||
```swift
|
||||
let foo = Environment.get("FOO")
|
||||
print(foo) // String?
|
||||
```
|
||||
|
||||
Zusätzlich kannst du den Wert aber auch dynamisch über die Eigenschaft _process_ abrufen.
|
||||
|
||||
```swift
|
||||
let foo = Environment.process.FOO
|
||||
print(foo) // String?
|
||||
```
|
||||
|
||||
#### - Definieren
|
||||
|
||||
In Xcode kannst du die eine Prozessvariable über das Schema _Run_ festlegen. Im Terminal benutze den Befehl _export_.
|
||||
|
||||
```sh
|
||||
export FOO=BAR
|
||||
vapor run serve
|
||||
```
|
||||
|
||||
### .env (dotenv)
|
||||
|
||||
Eine .env-Datei beinhaltet Schlüssel-Wert-Paare, welche entsprechend der Umgebung geladen werden. Auf dieser Art müssen die Umgebungsvariablen nicht manuell angelegt werden. Vapor lädt die Datei aus dem Arbeitsverzeichnis.
|
||||
|
||||
```sh
|
||||
# Key=Value
|
||||
FOO=BAR
|
||||
```
|
||||
|
||||
When your application boots, you will be able to access the contents of this file like other process environment variables.
|
||||
|
||||
```swift
|
||||
let foo = Environment.get("FOO")
|
||||
print(foo) // String?
|
||||
```
|
||||
|
||||
!!! info
|
||||
Variables specified in `.env` files will not overwrite variables that already exist in the process environment.
|
||||
|
||||
Alongside `.env`, Vapor will also attempt to load a dotenv file for the current environment. For example, when in the `development` environment, Vapor will load `.env.development`. Any values in the specific environment file will take precedence over the general `.env` file.
|
||||
|
||||
A typical pattern is for projects to include a `.env` file as a template with default values. Specific environment files are ignored with the following pattern in `.gitignore`:
|
||||
|
||||
```gitignore
|
||||
.env.*
|
||||
```
|
||||
|
||||
When the project is cloned to a new computer, the template `.env` file can be copied and have the correct values inserted.
|
||||
|
||||
```sh
|
||||
cp .env .env.development
|
||||
vim .env.development
|
||||
```
|
||||
|
||||
!!! warning
|
||||
Dotenv files with sensitive information such as passwords should not be committed to version control.
|
||||
|
||||
If you're having difficulty getting dotenv files to load, try enabling debug logging with `--log debug` for more information.
|
||||
|
||||
## Custom Environments
|
||||
|
||||
To define a custom environment name, extend `Environment`.
|
||||
|
||||
```swift
|
||||
extension Environment {
|
||||
static var staging: Environment {
|
||||
.custom(name: "staging")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The application's environment is usually set in `main.swift` using `Environment.detect()`.
|
||||
|
||||
```swift
|
||||
import Vapor
|
||||
|
||||
var env = try Environment.detect()
|
||||
try LoggingSystem.bootstrap(from: &env)
|
||||
|
||||
let app = Application(env)
|
||||
defer { app.shutdown() }
|
||||
```
|
||||
|
||||
The `detect` method uses the process's command line arguments and parses the `--env` flag automatically. You can override this behavior by initializing a custom `Environment` struct.
|
||||
|
||||
```swift
|
||||
let env = Environment(name: "testing", arguments: ["vapor"])
|
||||
```
|
||||
|
||||
The arguments array must contain at least one argument which represents the executable name. Further arguments can be supplied to simulate passing arguments via the command line. This is especially useful for testing.
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
# Ordnerstruktur
|
||||
|
||||
Lass uns einen Blick auf die Ordnerstruktur von Vapor werfen. Die Ordnerstruktur von Vapor orientiert sich an den Vorgaben des [Swift Package Managers](spm.md). Falls du schon mal mit dem SPM gearbeitet hast, sollte sie dir bekannt vorkommen.
|
||||
|
||||
```
|
||||
.
|
||||
├── Public
|
||||
├── Sources
|
||||
│ ├── App
|
||||
│ │ ├── Controllers
|
||||
│ │ ├── Migrations
|
||||
│ │ ├── Models
|
||||
│ │ ├── configure.swift
|
||||
│ │ └── routes.swift
|
||||
│ └── Run
|
||||
│ └── main.swift
|
||||
├── Tests
|
||||
│ └── AppTests
|
||||
└── Package.swift
|
||||
```
|
||||
|
||||
## Public
|
||||
|
||||
Der Ordner _Public_ beinhaltet Dateien, die sozusagen mitveröffentlicht werden. Das können Dateien für die Seitendarstellung sein, wie z. B. Bilder, CSS/JS-Dateien sein. Damit Vapor während der Ausführung auf den Ordner zugreifen kann muss eine _FileMiddleware_ in der Datei `configure.swift` mitangegeben werden.
|
||||
|
||||
```swift
|
||||
// Serves files from `Public/` directory
|
||||
let fileMiddleware = FileMiddleware(
|
||||
publicDirectory: app.directory.publicDirectory
|
||||
)
|
||||
app.middleware.use(fileMiddleware)
|
||||
```
|
||||
|
||||
## Sources
|
||||
|
||||
Im Ordner _Sources_ befinden sich die eigentlichen Anwendungsdateien, unterteilt in die Unterordner _App_ und _Run_. Die beiden Unterordnern stellen Paketmodule dar. Mehr dazu findest du im Abschnitt [Swift Package Manager](spm.md).
|
||||
|
||||
### App
|
||||
|
||||
Der Ordner _App_ beinhaltet die Anwendungslogik.
|
||||
|
||||
#### Controllers
|
||||
|
||||
Der Ordner _Controllers_ beinhaltet die Definitionen der Endpunkte der Anwendung. Mehr dazu findest du im Abschnitt [Controllers](controllers.md).
|
||||
|
||||
#### Migrations
|
||||
|
||||
Der Ordner _Migrations_ beinhaltet die Definitionen zu Tabellen der Datebank.
|
||||
|
||||
#### Models
|
||||
|
||||
Der Ordner _Models_ beinhaltet die Klassendefinitionen für die Entitäten.
|
||||
|
||||
#### configure.swift
|
||||
|
||||
Die Datei _configure.swift_ umfasst die Methode `configure(_:)`. Sie wird in der Datei `main.swift` aufgerufen um die Anwendung mit entsprechenden Angaben zu Endpunkten, zur Datenbank oder zu Providern zu konfigurieren.
|
||||
|
||||
#### routes.swift
|
||||
|
||||
Die Datei _routes.swift_ beinhaltet die Methode `routes(_:)`. Sie wird am Ende von der `configure(_:)`-Methode aufgerufen um die Endpunkte zu registrieren.
|
||||
|
||||
### Run
|
||||
|
||||
Der Ordner _Run_ stellt die Ausführungsdatei dar.
|
||||
|
||||
#### main.swift
|
||||
|
||||
Die Datei _main.swift_ erstellt eine Instanz der Anwendung und führt diese aus.
|
||||
|
||||
## Tests
|
||||
|
||||
Für jedes Paketmodul kann ein entsprechender Ordner unter _Tests_ angelegt werden.
|
||||
|
||||
### AppTests
|
||||
|
||||
Der Ornder _AppTests_ beinhaltet alle möglichen Tests für Komponenten der Anwendung.
|
||||
|
||||
## Package.swift
|
||||
|
||||
Die Datei _Package.swift_ ist die Paketbeschreibung.
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# Hallo Welt!
|
||||
|
||||
In diesem Abschnitt erklären wir dir Schritt für Schritt, wie du ein Vapor-Projekt erstellst und ausführst. Sollte dir _Swift_ oder die _Vapor Toolbox_ noch fehlen, werfe zuerst einen Blick in die beiden Abschnitte [Installation → macOS](install/macos.md) und [Installation → Linux](install/linux.md).
|
||||
|
||||
|
||||
## Projekt erstellen
|
||||
|
||||
Starte die Terminal-App auf deinem Mac und führe den Toolbox-Befehl aus. Der Befehl erstellt einen Projektordner mitsamt den Dateien.
|
||||
|
||||
```sh
|
||||
vapor new hello -n
|
||||
```
|
||||
|
||||
Sobald der Befehl durchgelaufen ist, wechsele in den neuen Ordner mit dem Befehl
|
||||
|
||||
```sh
|
||||
cd hello
|
||||
```
|
||||
|
||||
## Projekt ausführen
|
||||
|
||||
Je nach System oder Entwicklungsumgebung muss das Projekt unterschiedlich ausgeführt werden:
|
||||
|
||||
### - mit Xcode
|
||||
|
||||
Öffne das Projekt mit dem Befehl
|
||||
|
||||
```sh
|
||||
open Package.swift
|
||||
```
|
||||
|
||||
Xcode öffnet sich und lädt zu Beginn alle notwendigen Paketverweise. Nach dem Laden sollte dir Xcode zur Verfügung stehen. Wähle anschließend in der Mitte eine Schema (oft einfach nur "My Mac") aus. Starte nun das Projekt über die Menüpunkte _Product_ > _Run_. Du solltest nun in der Konsole einen Eintrag wie diesen sehen:
|
||||
|
||||
```sh
|
||||
[ INFO ] Server starting on http://127.0.0.1:8080
|
||||
```
|
||||
|
||||
### - mit Linux
|
||||
|
||||
Für Linux-Distributionen (oder falls du einfach kein Xcode verwendest) kannst du den Editor deiner Wahl nutzen, wie z.B. Vim oder VSCode. Mehr Informationen dazu, findest du im Abschnitt [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md).
|
||||
|
||||
Starte das Projekt mit dem Befehl
|
||||
|
||||
```sh
|
||||
swift run
|
||||
```
|
||||
|
||||
Bei der Erstausführung werden die Paketverweise nachgeladen. Dementsprechend kann die Erstellung ein wenig brauchen. Nach dem Laden solltest einen Eintrag im Terminal sehen
|
||||
|
||||
```sh
|
||||
[ INFO ] Server starting on http://127.0.0.1:8080
|
||||
```
|
||||
|
||||
## Aufruf im Browser
|
||||
|
||||
Rufe die Seite über den Link <a href="http://localhost:8080/hello" target="_blank">localhost:8080/hello</a> oder <a href="http://127.0.0.1:8080" target="_blank">http://127.0.0.1:8080</a> im Browser auf. Als Ergebnis sollte "Hello World" im Browser erscheinen.
|
||||
|
||||
Das wars! Geschafft! Gratulation zur ersten Vapor-Anwendung. 🎉
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Willkommen
|
||||
|
||||
Willkommen zur Dokumentation von Vapor! Vapor ist ein Web-Framework für Swift, mit das du Webseiten, ganze Webserver oder APIs schreiben kannst. Vapor selbst ist in Swift geschrieben, welche eine moderne, leistungsstarke und sichere Sprache ist und die gegenüber anderen Serversprachen eine Vielzahl von Vorteilen bietet.
|
||||
|
||||
## Einstieg
|
||||
|
||||
Für die Installation, folge den Anweisungen im Abschnitt [Installation → macOS](install/macos.de.md). Nach der Installation, folge den Anweisungen [Erste Schritte → Hello, world](hello-world.de.md) um deine erste Vapor-Anwendungen zu erstellen.
|
||||
|
||||
## Hilfen
|
||||
|
||||
Mehr Informationen zum Web-Framework findest du unter anderem hier:
|
||||
|
||||
| name | description | link |
|
||||
|----------------|--------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| Vapor Discord | Tausche dich mit anderen Mitgliedern der Vapor-Community aus.| [visit →](https://vapor.team) |
|
||||
| API docs | Auto-generierte Dokumentation zu Vapor. | [visit →](https://api.vapor.codes) |
|
||||
| Stack Overflow | Stelle Fragen oder lese Antworten zu Vapor auf Stackoverflow.| [visit →](https://stackoverflow.com/questions/tagged/vapor) |
|
||||
| Swift Forums | Beiträge zu Vapor im offiziellen Swift-Forum. | [visit →](https://forums.swift.org/c/related-projects/vapor)|
|
||||
| Source Code | Der ganze Quellcode von Vapor auf Github. | [visit →](https://github.com/vapor/vapor) |
|
||||
| GitHub Issues | Melde Fehler oder reiche deine Ideen auf Github ein. | [visit →](https://github.com/vapor/vapor/issues) |
|
||||
|
||||
## Altversionen
|
||||
|
||||
Die Dokumentationen zu älteren Versionen von Vapor findest du unter [https://legacy.docs.vapor.codes/](https://legacy.docs.vapor.codes/).
|
||||
|
||||
## Authoren
|
||||
|
||||
Das Vapor-Kernteam und viele weitere Mitglieder der Vapor-Community.
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
# Installation unter Linux
|
||||
|
||||
Die Mindestvorraussetzung für Vapor ist Swift 5.2 oder höher. Daher läuft das Framework auch auf allen Linux-Distributionen, die ebenfalls Swift 5.2 oder höher unterstützen. Unter [Swift.org](https://swift.org/download/) kannst du Swift für Linux-Distributionen herunterladen und installieren.
|
||||
|
||||
Hier findest du eine Übersicht der untersützten Linux-Distribution:
|
||||
|
||||
|Distribution |Version |Swift Version|
|
||||
|-----------------------------------------------------------------------------------|---------------|-------------|
|
||||
|Ubuntu. |20.04 |>= 5.2.4. |
|
||||
|Ubuntu |16.04, 18.04. |>= 5.2. |
|
||||
|Fedora. |>= 30 |>= 5.2 |
|
||||
|CentOS. |8. |>= 5.2.4. |
|
||||
|Amazon Linux |2. |>= 5.2.4. |
|
||||
|_Die Angaben können abweichen. Für offizielle Daten siehe [Swift Releases](https://swift.org/download/#releases)_|
|
||||
|
||||
Es kann gut möglich sein, dass Swift auch auf Distributionen läuft, die nicht offiziell gelistet werden, allerdings können wir das nicht garantieren. Mehr Informationen dazu, findest du unter [Swift - Github](https://github.com/apple/swift#getting-started).
|
||||
|
||||
## Swift-Installation
|
||||
|
||||
Auf der Seite [Swift.org Using Downloads](https://swift.org/download/#using-downloads) findest du eine Anleitung, wie du Swift unter Linux installierst.
|
||||
|
||||
### - Fedora
|
||||
|
||||
Fedora-Nutzer können folgenden Befehl ausführen
|
||||
|
||||
```sh
|
||||
sudo dnf install swift-lang
|
||||
```
|
||||
|
||||
Solltest du jedoch Fedora 30 verwenden, benötigst du EPEL 8 um Swift 5.2 zum Laufen zu bringen.
|
||||
|
||||
### - Docker
|
||||
|
||||
Du kannst ebenso das offizielle Docker-Image benutzen. Mehr Informationen dazu findest du unter [Swift's Docker Hub](https://hub.docker.com/_/swift).
|
||||
|
||||
## Toolbox-Installation
|
||||
|
||||
Neben Swift kannst du auch die Vapor-Toolbox installieren. Die Toolbox ist zwar für Vapor nicht zwingend notwendig, aber beinhaltet Befehle, die dich bei der Arbeit mit Vapor unterstützen.
|
||||
|
||||
Unter Linux muss die Toolbox erst von [Github Toolbox](https://github.com/vapor/toolbox/releases) geladen und anschließend installiert werden.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/vapor/toolbox.git
|
||||
cd toolbox
|
||||
git checkout <desired version>
|
||||
make install
|
||||
```
|
||||
|
||||
Im Anschluss kannst du die Installation überprüfen, indem du den Befehl
|
||||
|
||||
```sh
|
||||
vapor --help
|
||||
```
|
||||
|
||||
ausführst. Dir sollten nun mehrere Befehl der Toolbox angezeigt werden.
|
||||
|
||||
Nach der Swift-Installation kannst du mit der Erstellung deiner ersten Vapor-Anwendung beginnen. Folge dazu den Anweisungen im Abschnitt [Erste Schritte → Hello, world](/hallo-world.de.md).
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Installation unter macOS
|
||||
|
||||
Die Mindestvoraussetzung für Vapor ist Swift 5.2 oder höher.
|
||||
|
||||
## Xcode-Installation
|
||||
|
||||
Xcode ist eine Entwicklungsumgebung von Apple. Du findest die App im [AppStore](https://itunes.apple.com/us/app/xcode/id497799835?mt=12). Mit der Installation von Xcode wird auch Swift installiert.
|
||||
|
||||

|
||||
|
||||
Sobald die App heruntergeladen ist, führe die Installation aus. Öffne nach der Installation Xcode um die Installation komplett abzuschließen. Mit dem Termin-Befehl `swift --version` kannst du nun überprüfen, ob die Installation von Swift erfolgreich verlief und welche Version installiert wurde.
|
||||
|
||||
```sh
|
||||
swift --version
|
||||
|
||||
Apple Swift version 5.2 (swiftlang-1100.0.270.13 clang-1100.0.33.7)
|
||||
Target: x86_64-apple-darwin19.0.0
|
||||
```
|
||||
|
||||
## Toolbox-Installation
|
||||
|
||||
Neben Swift kannst du auch die Vapor-Toolbox installieren. Die Toolbox ist zwar für Vapor nicht zwingend notwendig, aber beinhaltet Befehle, die dich bei der Arbeit mit Vapor unterstützen.
|
||||
|
||||
Du kannst die Toolbox mittels [Homebrew](https://brew.sh) installieren:
|
||||
|
||||
```sh
|
||||
brew install vapor
|
||||
```
|
||||
|
||||
##
|
||||
|
||||
Nach den Installationen kannst du mit der Erstellung deiner ersten Vapor-Anwendung beginnen. Folge dazu den Anweisungen im Abschnitt [Erste Schritte → Hello, world](../hello-world.de.md).
|
||||
|
|
@ -0,0 +1,226 @@
|
|||
# Server
|
||||
|
||||
Vapor enthält einen HTTP-Server auf Basis von [SwiftNIO](https://github.com/apple/swift-nio). Der Server unterstützt die Protokolle HTTP/1, HTTP/2 und Protokollerweiterungen wie [WebSockets](websockets.md).
|
||||
|
||||
## Einstellungen
|
||||
|
||||
Die Einstellungen des Servers können über _app.http.server_ eingerichtet oder verändert werden.
|
||||
|
||||
### Servername
|
||||
|
||||
Der _Hostname_ ist die Bezeichnung des Servers. Standardmäßig lautet der Name "_127.0.0.1_".
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Configure custom hostname.
|
||||
app.http.server.configuration.hostname = "dev.local"
|
||||
```
|
||||
|
||||
### Serverport
|
||||
|
||||
Der _Port_ ist die Portnummer des Servers. Der Standard-Port lautet "_8080_".
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Configure custom port.
|
||||
app.http.server.configuration.port = 1337
|
||||
```
|
||||
|
||||
### Backlog
|
||||
|
||||
Der Parameter _Backlog_ definiert die maximale Anzahl an ausstehenden Verbindungen zum Server. Der Standardwert lautet "_256_".
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// custom backlog.
|
||||
app.http.server.configuration.backlog = 128
|
||||
```
|
||||
|
||||
### Reuse Address
|
||||
|
||||
Der Parameter _Reuse Adress_ allows for reuse of local addresses. Standardmäßig ist der Parameter aktiviert.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Disable address reuse.
|
||||
app.http.server.configuration.reuseAddress = false
|
||||
```
|
||||
|
||||
### TCP No Delay
|
||||
|
||||
Mit Aktivieren des Parameters _TCP No Delay_ wird versucht die Paketverzögerung so gering wie möglich zu halten. Standardmäßig ist der Parameter aktiviert.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Minimize packet delay.
|
||||
app.http.server.configuration.tcpNoDelay = true
|
||||
```
|
||||
|
||||
### Antwortkomprimierung
|
||||
|
||||
Der Parameter _responseCompression_ legt die Komprimierung einer Serverantwort fest. Der Parameter ist standardmäßig deaktiviert. Für die Komprimierung wird Gzip verwendet.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Enable HTTP response compression.
|
||||
app.http.server.configuration.responseCompression = .enabled
|
||||
|
||||
// Enable HTTP response compression with an initial buffer capacity
|
||||
app.http.server.configuration.responseCompression = .enabled(initialByteBufferCapacity: 1024)
|
||||
```
|
||||
|
||||
### Anfragedekomprimierung
|
||||
|
||||
Der Parameter _requestDecompression_ legt die Dekomprimierung einer Serveranfrage fest. Der Parameter ist standardmäßig deaktiviert. Für die Komprimierung wird Gzip verwendet.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Enable HTTP request decompression.
|
||||
app.http.server.configuration.requestDecompression = .enabled
|
||||
|
||||
// Enable HTTP request decompression with size limit
|
||||
app.http.server.configuration.requestDecompression = .enabled(limit: .ratio(10))
|
||||
|
||||
// Enable HTTP request decompression with no size limit
|
||||
app.http.server.configuration.requestDecompression = .enabled(limit: .none)
|
||||
```
|
||||
|
||||
Available options are:
|
||||
|
||||
- `size`: Maximum decompressed size in bytes.
|
||||
- `ratio`: Maximum decompressed size as ratio of compressed bytes.
|
||||
- `none`: No size limits.
|
||||
|
||||
Setting decompression size limits can help prevent maliciously compressed HTTP requests from using large amounts of memory.
|
||||
|
||||
### Pipelining
|
||||
|
||||
Der Parameter _supportPipelining_ aktiviert die Unterstützung für HTTP-Pipeling. Der Parameter ist ständardmäßig deaktiviert.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Support HTTP pipelining.
|
||||
app.http.server.configuration.supportPipelining = true
|
||||
```
|
||||
|
||||
### Versions
|
||||
|
||||
Der Parameter _supportVersions_ legt fest, welche HTTP-Versionen vom Server verwendet werden soll. Wenn TLS aktiviert ist, unterstützt Vapor standardmäßig die beiden Protokolle HTTP/1 und HTTP/2. Sobald TLS deaktiviert wird, wird nur HTTP/1 unterstützt.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Disable HTTP/1 support.
|
||||
app.http.server.configuration.supportVersions = [.two]
|
||||
```
|
||||
|
||||
### TLS
|
||||
|
||||
Der Parameter _tlsConfiguration_ legt fest, ob TLS (SSL) verwendet werden soll. Standardmäßig ist kein TLS angegeben.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Enable TLS.
|
||||
try app.http.server.configuration.tlsConfiguration = .forServer(
|
||||
certificateChain: NIOSSLCertificate.fromPEMFile("/path/to/cert.pem").map { .certificate($0) },
|
||||
privateKey: .file("/path/to/key.pem")
|
||||
)
|
||||
```
|
||||
|
||||
For this configuration to compile you need to add `import NIOSSL` at the top of your configuration file. You also might need to add NIOSSL as a dependency in your Package.swift file.
|
||||
|
||||
### Name
|
||||
|
||||
Der Parameter _serverName_ legt das Feld _Server_ in der Kopfzeile einer Serverantwort fest. Standardmäßig ist kein Name angegeben.
|
||||
|
||||
```swift
|
||||
/// [configure.swift]
|
||||
|
||||
// Add 'Server: vapor' header to responses.
|
||||
app.http.server.configuration.serverName = "vapor"
|
||||
```
|
||||
|
||||
## Funktionen
|
||||
|
||||
### Start
|
||||
|
||||
Der Server kann manuell gestartet werden.
|
||||
|
||||
```swift
|
||||
// Start Vapor's server.
|
||||
try app.server.start()
|
||||
```
|
||||
|
||||
### Shutdown
|
||||
|
||||
```swift
|
||||
// Request server shutdown.
|
||||
app.server.shutdown()
|
||||
|
||||
// Wait for the server to shutdown.
|
||||
try app.server.onShutdown.wait()
|
||||
```
|
||||
|
||||
## Befehle
|
||||
|
||||
### Serve
|
||||
|
||||
Um den Server zu starten, kannst du Terminal-Befehl _serve_ verwenden. Der Befehl wird automatisch ausgeführt, wenn keine anderen Befehle mitangegeben werden.
|
||||
|
||||
```swift
|
||||
vapor run serve
|
||||
```
|
||||
|
||||
Es können folgende Parameter mitangegeben werden:
|
||||
|
||||
| Name | Befehl | Beschreibung | Beispiel |
|
||||
|-----------------------|----------------|------------------------------------------------------|-------------------------------|
|
||||
| hostname | -H | Überschreibt den vordefinierten Hostname | vapor run serve -H dev.local |
|
||||
| port | -p | Überschreibt den vordefinierten Port | vapor run serve -p 1337 |
|
||||
| bind | -b | Überschreibt den vordefinierten Hostnamen und Port | vapor run serve -b 0.0.0.0:80 |
|
||||
| help | --help | Hilfe | vapor run serve --help |
|
||||
|
||||
## Hinweis
|
||||
|
||||
Der Server von Vapor kann grundsätzlich ersetzt werden. Dazu muss der neue Server von Typ `Server` sein.
|
||||
|
||||
```swift
|
||||
app.servers.use(.http)
|
||||
```
|
||||
|
||||
```swift
|
||||
import Vapor
|
||||
|
||||
final class MyServer: Server {
|
||||
...
|
||||
}
|
||||
|
||||
app.servers.use { app in
|
||||
MyServer()
|
||||
}
|
||||
```
|
||||
|
||||
Custom servers can extend `Application.Servers.Provider` for leading-dot syntax.
|
||||
|
||||
```swift
|
||||
extension Application.Servers.Provider {
|
||||
static var myServer: Self {
|
||||
.init {
|
||||
$0.servers.use { app in
|
||||
MyServer()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app.servers.use(.myServer)
|
||||
```
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
# Swift Package Manager
|
||||
|
||||
Über den [Swift Package Manager](https://www.swift.org/package-manager/) können verschiedene Pakete in einem Projekt zusammengefasst und eingebunden werden. Damit ist der Manager ähnlich zu anderen Lösungen, wie CocoaPods, Ruby gems oder NPM. Ein offizielles, zentrales Paketeregister gibt es allerdings nicht, daher greift der Manager stattdessen über Git auf die jeweiligen Pakete zu.
|
||||
|
||||
### Paketbeschreibung
|
||||
|
||||
Das Herzstück des Paketmanagers ist die Paketbeschreibung. Sie befindet sich im Hauptverzeichnis eines Paketes. Die Beschreibung beinhaltet unter anderem Angaben zu Swift-Tools, den Paketnamen, dem Paketinhalt und die Abhängigkeiten.
|
||||
|
||||
```swift
|
||||
/// [Package.swift]
|
||||
|
||||
// swift-tools-version:5.2
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "app",
|
||||
platforms: [
|
||||
.macOS(.v10_15)
|
||||
],
|
||||
products: [
|
||||
.executable(name: "Run", targets: ["Run"]),
|
||||
.library(name: "App", targets: ["App"]),
|
||||
],
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
|
||||
],
|
||||
targets: [
|
||||
.target(name: "App", dependencies: [.product(name: "Vapor", package: "vapor")]),
|
||||
.target(name: "Run", dependencies: ["App"]),
|
||||
.testTarget(name: "AppTests", dependencies: ["App"])
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
#### - Swift-Tools
|
||||
|
||||
Die erste Zeile in der Beschreibung deklariert die für das Paket notwendige Mindestversion von Swift. Je nach Versionsstand können sich zudem die Paketbeschreibungen unterscheiden!
|
||||
|
||||
#### - Name
|
||||
|
||||
Der Parameter _Name_ legt den Paketnamen fest.
|
||||
|
||||
#### - Platforms
|
||||
|
||||
Der Parameter _Platforms_ beschreibt für welche Systeme letzten Endes das Paket sein soll. Wenn z.B. als Plattform `.macOS(.v10.14)` angegeben wird, wird macOS Mojave oder neuer erwartet.
|
||||
|
||||
#### - Products
|
||||
|
||||
Der Parameter _Products_ fasst die Targets zusammen.
|
||||
|
||||
#### - Dependencies
|
||||
|
||||
Dependencies sind Paketverweise, auf die das Paket aufbaut und daher für die Ausführung zwingend benötigt werden. Deshalb auch Abhängigkeiten genannt. Im Falle von Vapor, verweisen alle Vapor-Pakete auf die aktuelle Vapor-Version. Neben dem Vapor-Paketverweis, können weitere Verweise hinzugefügt werden.
|
||||
|
||||
#### - Targets
|
||||
|
||||
Targets sind Module, Dateien oder Tests. Vapor-Anwendungen beinhalten bis zu drei Targets.
|
||||
|
||||
### Ordnerstruktur
|
||||
|
||||
Die Ordnerstruktur eines Paketes sieht wie folgt aus:
|
||||
|
||||
```
|
||||
.
|
||||
├── Sources
|
||||
│ ├── App
|
||||
│ │ └── (Source code)
|
||||
│ └── Run
|
||||
│ └── main.swift
|
||||
├── Tests
|
||||
│ └── AppTests
|
||||
└── Package.swift
|
||||
```
|
||||
|
||||
### Resolved-Datei
|
||||
|
||||
Bei der ersten Ausführung des Paketes wird automatisch im Hauptverzeichnis eine Datei _Package.resolved_ erstellt. Die Datei listet die angegeben Abhängigkeiten inklusive Versionsstand auf. Hier ist zu beachten, dass das Paket sich erstmal an den Vorgaben in der Resolved-Datei hält, selbst wenn es bereits einen neuen Versionsstand einer Abhängigkeit gibt.
|
||||
|
||||
Die Resolved-Datei kann über die Menüpunkte *File* → *Swift Packages* → *Update To Latest Swift Package Versions* aktualisiert werden.
|
||||
|
||||
### Xcode
|
||||
|
||||
Veränderungen an der Paketbeschreibung werden in Xcode mit Speichern sofort umgesetzt.
|
||||
|
|
@ -39,6 +39,7 @@ var searchIndexDocs = [SearchIndexDocs]()
|
|||
|
||||
for doc in newSearchIndex.docs {
|
||||
if !doc.location.starts(with: "en/")
|
||||
&& !doc.location.starts(with: "de/")
|
||||
&& !doc.location.starts(with: "fr/")
|
||||
&& !doc.location.starts(with: "nl/") {
|
||||
searchIndexDocs.append(doc)
|
||||
|
|
@ -47,4 +48,4 @@ for doc in newSearchIndex.docs {
|
|||
|
||||
newSearchIndex.docs = searchIndexDocs
|
||||
|
||||
try JSONEncoder().encode(newSearchIndex).write(to: fileURL)
|
||||
try JSONEncoder().encode(newSearchIndex).write(to: fileURL)
|
||||
|
|
|
|||
|
|
@ -85,12 +85,18 @@ plugins:
|
|||
name: Français
|
||||
site_name: Documentation Vapor
|
||||
build: true
|
||||
de:
|
||||
name: German
|
||||
site_name: Vapor Dokumentation
|
||||
build: true
|
||||
# Add navigation translations here
|
||||
nav_translations:
|
||||
nl:
|
||||
Welcome: Welkom
|
||||
fr:
|
||||
Welcome: Bienvenue
|
||||
de:
|
||||
Welcome: Willkommen
|
||||
|
||||
|
||||
nav:
|
||||
|
|
|
|||
Loading…
Reference in New Issue