Rust ve Actix ile web sunucusu nasıl kurulur

0 Hisse senetleri
0
0
0
0

giriiş

Bu eğitimde, DigitalOcean Droplet üzerinde Rust ve Actix-web framework'ü kullanarak bir web sunucusu oluşturmayı öğreneceksiniz. Bir çekirdek sunucu kuracak ve Todos öğelerinin alınması ve oluşturulması gibi yaygın RESTful işlemlerini destekleyen basit bir Todo öğeleri listesini yönetmek için rotalar oluşturacaksınız.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Bir DigitalOcean Bulut Hesabı Bir Droplet'i döndürmek için.
  • Bir Ubuntu Droplet'i çalışıyor.
  • Droplet'e Rust kuruldu.
  • Değişkenler, fonksiyonlar ve nitelikler dahil olmak üzere Rust prensiplerine aşinalık.

Adım 1 – Ubuntu Droplet Kurulumu

DigitalOcean Droplet'inize SSH ile bağlanın: Terminalinizi açın ve Droplet'inize SSH ile bağlanmak için aşağıdaki komutu kullanın. your_username yerine gerçek kullanıcı adınızı ve your_droplet_ip yerine Droplet IP adresinizi yazın:

ssh your_username@your_droplet_ip

Paket Listesini Güncelle: Giriş yaptıktan sonra, mevcut paketler hakkında en güncel bilgilere sahip olduğunuzdan emin olmak için paket listesini güncelleyin:

sudo apt update

Rust'ı yükleyin: Rust'ı yüklemek için, Rust kurulum betiğini indirip çalıştıracak olan aşağıdaki komutu kullanın:

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

Kurulumu tamamlamak için ekrandaki talimatları izleyin. Kurulumdan sonra terminalinizi yeniden başlatmanız veya şu komutu çalıştırmanız gerekebilir:

source $HOME/.cargo/env

Temel kütüphaneleri yükleyin: Rust uygulamalarını derlemek için gereken kütüphaneleri yükleyin. build-essential ve libssl-dev'i şu şekilde yükleyebilirsiniz:

sudo apt install build-essential libssl-dev

Rust kurulumunu doğrulayın: Rust'ın doğru şekilde kurulduğunu doğrulamak için sürümü kontrol edin:

rustc --version

Cargo'yu (Rust Paket Yöneticisi) yükleyin: Cargo, Rust ile birlikte otomatik olarak yüklenir. Sürümü kontrol ederek kurulumunu doğrulayabilirsiniz:

cargo --version

Adım 2 – Projeyi başlatın

Yükü kullanarak sammy_todos adında yeni bir rust projesi oluşturalım

cargo new sammy_todos

Ardından Cargo.toml dosyasını bulun. Rust projenizin kök dizinine gidin. Cargo.toml dosyası, projenizi oluşturduğunuz dizinde bulunur (örneğin, sammy_todos). Proje dizininize geçmek için aşağıdaki komutu kullanabilirsiniz:

cd sammy_todos/
ls

Aşağıda otomatik olarak oluşturulan Rust proje dosyaları yer almaktadır:

Output
Cargo.toml src

Cargo.toml dosyasına bağımlılık olarak actix-web ve serde'yi ekleyin. Burada, serileştirme ve serileştirmeyi kaldırma işlemleri için serde gereklidir.

vi Cargo.toml

Ve bağımlılıkların altına aşağıdaki satırları ekleyin.

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

Şimdi bağımlılıkları indirmek ve derlemek için aşağıdaki komutu kullanın:

cargo build

Adım 3 – Temel Bir Sunucu Oluşturun

main.rs dosyasına, ana sunucuyu başlatmak için aşağıdaki kod satırlarını ekleyin. Projenizin içindeki src dizinine gitmeniz gerekiyor.

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
}

Sunucuyu çalıştırın:

cargo run

Sunucuyu test etmek için yeni bir terminal oturumu açın ve aşağıdaki komutu çalıştırın:

curl http://127.0.0.1:8080

Aşağıdaki yanıtı almalısınız:

Output
Welcome to the Sammy Todo API!

Adım 4 – Bir Yapılacaklar Modeli Ekleyin

İstek ve yanıtı serileştirmek için Todo modeli gereklidir. main.rs dosyasına aşağıdaki kod satırlarını ekleyin.

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

Adım 5 – Yapılacaklar Listesini Oluştur'u Uygula

Bu API, yapılacaklar listesini oluşturur ve yalnızca yapılacaklar listenizi döndüren bir kukla API'dir; ancak bunu kalıcı hale getirmek için veritabanlarıyla uygulayabilirsiniz.

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

Adım 6 – Çalıştırın ve Yapılacaklar Listesini Alın

Bu API, yapılacak işi şu kimlikle döndürür:

#[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())
}

Hizmeti sunucunuza bağlayın

Rust sunucusunun main.rs dosyası şu şekilde görünüyor:

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())
}

Şimdi bunu curl ile bir POST isteği göndererek test edebilirsiniz:

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

Sonuç

Tebrikler! Rust ve Actix kullanarak temel bir web sunucusunu başarıyla kurdunuz. Bu eğitim, Yapılacaklar öğelerini almak ve oluşturmak için uç noktaların nasıl oluşturulacağını öğreterek, daha karmaşık uygulamalar oluşturmak için sağlam bir temel oluşturacaktır. Uygulamanızı daha da geliştirmek için, Yapılacaklar öğelerinizi verimli bir şekilde depolamanıza ve yönetmenize olanak tanıyan veri kalıcılığı sağlayan bir veritabanı çözümü entegre edin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz

CentOS 6/7'ye IBSng nasıl kurulur

CentOS 6/7'de IBSng Kurulum Eğitimi Bu makalede, centOS 6/7'de IBSng kurulum eğitimi size yardımcı olmak için sağlanmıştır…