Wie man einen Webserver mit Rust und Actix einrichtet

0 Aktien
0
0
0
0

Einführung

In diesem Tutorial lernen Sie, wie Sie mit Rust und dem Actix-Webframework einen Webserver auf einem DigitalOcean Droplet erstellen. Sie richten einen Kernserver ein und erstellen Routen zur Verwaltung einer einfachen Aufgabenliste, die gängige RESTful-Operationen wie das Abrufen und Erstellen von Aufgaben unterstützt.

Voraussetzungen

Bevor Sie beginnen, stellen Sie bitte sicher, dass Sie Folgendes haben:

  • Eins DigitalOcean Cloud-Konto Um einen Tropfen zu drehen.
  • Ein Ubuntu-Droplet ist eingerichtet und betriebsbereit.
  • Rust ist auf dem Droplet installiert.
  • Kenntnisse der Rust-Prinzipien, einschließlich Variablen, Funktionen und Attribute.

Schritt 1 – Ubuntu-Droplet einrichten

Stellen Sie eine SSH-Verbindung zu Ihrem DigitalOcean Droplet her: Öffnen Sie Ihr Terminal und verwenden Sie den folgenden Befehl, um eine SSH-Verbindung zu Ihrem Droplet herzustellen. Ersetzen Sie „your_username“ durch Ihren tatsächlichen Benutzernamen und „your_droplet_ip“ durch die IP-Adresse Ihres Droplets:

ssh your_username@your_droplet_ip

Paketliste aktualisieren: Aktualisieren Sie nach dem Anmelden die Paketliste, um sicherzustellen, dass Sie über die aktuellsten Informationen zu verfügbaren Paketen verfügen:

sudo apt update

Rust installieren: Um Rust zu installieren, verwenden Sie den folgenden Befehl, der das Rust-Installationsskript herunterlädt und ausführt:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Folgen Sie den Anweisungen auf dem Bildschirm, um die Installation abzuschließen. Nach der Installation müssen Sie möglicherweise Ihr Terminal neu starten oder Folgendes ausführen:

source $HOME/.cargo/env

Installieren Sie die erforderlichen Bibliotheken: Installieren Sie die Bibliotheken, die zum Erstellen von Rust-Anwendungen benötigt werden. Sie können build-essential und libssl-dev mit folgendem Befehl installieren:

sudo apt install build-essential libssl-dev

Überprüfen Sie die Rust-Installation: Um zu überprüfen, ob Rust korrekt installiert ist, überprüfen Sie die Version:

rustc --version

Installieren Sie Cargo (Rust-Paketmanager): Cargo wird automatisch mit Rust installiert. Sie können die Installation überprüfen, indem Sie die Version prüfen:

cargo --version

Schritt 2 – Projekt starten

Lasst uns ein neues Rust-Projekt namens sammy_todos mit der Payload erstellen.

cargo new sammy_todos

Suchen Sie anschließend die Datei Cargo.toml. Wechseln Sie dazu in das Stammverzeichnis Ihres Rust-Projekts. Die Datei Cargo.toml befindet sich im selben Verzeichnis, in dem Sie Ihr Projekt erstellt haben (z. B. sammy_todos). Sie können folgenden Befehl verwenden, um in Ihr Projektverzeichnis zu wechseln:

cd sammy_todos/
ls

Nachfolgend sind die automatisch generierten Rust-Projektdateien aufgeführt:

Output
Cargo.toml src

Fügen Sie actix-web und serde als Abhängigkeiten in Cargo.toml hinzu. Serde wird hierbei für die Serialisierung und Deserialisierung benötigt.

vi Cargo.toml

Fügen Sie unter Abhängigkeiten die folgenden Zeilen hinzu.

[dependencies]
actix-web = "4.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Verwenden Sie nun den folgenden Befehl, um die Abhängigkeiten herunterzuladen und zu kompilieren:

cargo build

Schritt 3 – Erstellen eines Basisservers

Fügen Sie in der Datei main.rs die folgenden Codezeilen hinzu, um einen Hauptserver zu starten. Sie müssen dazu in das Verzeichnis src Ihres Projekts wechseln.

use actix_web::{get, App, HttpServer, HttpResponse, Responder,web};
#[get("/")]
async fn index() -> impl Responder {
HttpResponse::Ok().body("Welcome to the Sammy Todo API!")
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(index)
})
.bind("127.0.0.1:8080")?
.run()
.await
}

Server starten:

cargo run

Um den Server zu testen, öffnen Sie eine neue Terminal-Sitzung und führen Sie folgenden Befehl aus:

curl http://127.0.0.1:8080

Sie sollten folgende Antwort erhalten:

Output
Welcome to the Sammy Todo API!

Schritt 4 – Aufgabenmodell hinzufügen

Das Todo-Modell ist erforderlich, um Anfrage und Antwort zu serialisieren. Fügen Sie die folgenden Codezeilen zur Datei main.rs hinzu.

use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct Todo {
id: i32,
title: String,
completed: bool,
}

Schritt 5 – Implementieren Sie die Aufgabenerstellung.

Diese API erstellt das Todo und ist eine Dummy-API, die einfach Ihr Todo zurückgibt. Sie können sie jedoch mit Datenbanken implementieren, um es persistent zu machen.

#[get("/todos")]
async fn create_todo(todo: web::Json<Todo>) -> impl Responder {
HttpResponse::Ok().body(serde_json::to_string(&todo).unwrap())
}

Schritt 6 – Ausführen Aufgabenliste abrufen

Diese API gibt die Aufgabe mit der ID zurück:

#[get("/todos/{id}")]
async fn get_todo(id: web::Path<i32>) -> impl Responder {
let todo = Todo {
id: id.into_inner(),
title: "Learn Actix-Web".to_string(),
completed: false,
};
HttpResponse::Ok().body(serde_json::to_string(&todo).unwrap())
}

Verbinden Sie den Dienst mit Ihrem Server.

Die Datei main.rs des Rust-Servers sieht folgendermaßen aus:

use actix_web::{get, App, HttpServer, HttpResponse, Responder, web};
#[get("/")]
async fn index() -> impl Responder {
HttpResponse::Ok().body("Welcome to the Sammy Todo API!")
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(index)
.service(get_todo)
.service(create_todo)
})
.bind("127.0.0.1:8080")?
.run()
.await
}
use serde::{Serialize, Deserialize}; // Added Deserialize to imports
#[derive(Serialize, Deserialize)] // Ensure Deserialize is imported
struct Todo {
id: i32,
title: String,
completed: bool,
}
#[get("/todos")]
async fn create_todo(todo: web::Json<Todo>) -> impl Responder {
HttpResponse::Ok().body(serde_json::to_string(&todo).unwrap())
}
#[get("/todos/{id}")]
async fn get_todo(id: web::Path<i32>) -> impl Responder {
let todo = Todo {
id: id.into_inner(),
title: "Learn Actix-Web".to_string(),
completed: false,
};
HttpResponse::Ok().body(serde_json::to_string(&todo).unwrap())
}

Sie können es nun testen, indem Sie eine POST-Anfrage mit curl senden:

curl -X POST -H "Content-Type: application/json" -d '{"title": "Buy groceries"}' http://127.0.0.1:8080/todos

Ergebnis

Herzlichen Glückwunsch! Sie haben erfolgreich einen einfachen Webserver mit Rust und Actix eingerichtet. Dieses Tutorial zeigt Ihnen, wie Sie Endpunkte zum Abrufen und Erstellen von Todo-Einträgen erstellen und damit eine solide Grundlage für die Entwicklung komplexerer Anwendungen schaffen. Um Ihre Anwendung weiter zu optimieren, integrieren Sie eine Datenbanklösung zur Datenspeicherung, mit der Sie Ihre Todo-Einträge effizient speichern und verwalten können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Das könnte Ihnen auch gefallen
So verwenden Sie Rsync zum Synchronisieren lokaler und entfernter Verzeichnisse

Synchronisierung von Verzeichnissen zwischen Server und lokalem System mit rsync

Die Dateisynchronisierung ist eine der wichtigsten Aufgaben bei der Datenspeicherung, Datensicherung und Serververwaltung. Das Tool rsync ist eine leistungsstarke, flexible und optimierte Lösung für diese Aufgabe. Diese Anleitung zeigt Ihnen, wie Sie lokale und entfernte Verzeichnisse (auf dem Server) mit rsync synchronisieren, es für Datensicherungen verwenden und Übertragungen automatisieren.
ModSecurity cPanel

Sicherheitstools in cPanel – Expertenleitfaden

Wenn Sie cPanel zur Verwaltung Ihres Webhostings nutzen, wissen Sie wahrscheinlich, dass Sicherheit eine der Grundlagen für den Erfolg Ihrer Website und das Vertrauen Ihrer Nutzer ist. cPanel bietet Ihnen eine Vielzahl von Tools, mit denen Sie die Sicherheit Ihrer Website deutlich verbessern können. In diesem Artikel gehen wir näher auf diese Tools ein und stellen Ihnen Links zu offizieller Dokumentation und weiterführenden Artikeln zur Verfügung, damit Sie die Sicherheit Ihres Hostings souveräner konfigurieren können.