iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
SideProject30

30 天用 Rust 打造 QR Code 製造機系列 第 2

Day 2 - Actix Web —— 高效能的 Rust Web 框架

  • 分享至 

  • xImage
  •  

昨天已經成功地為我們的 QR Code 製造機設定好 Rust 和 Cargo 的開發環境。而今天,則要開始進入 Rust 的 Web 開發領域,利用 Actix Web 這個強大的 Web 框架。

為什麼選擇 Actix Web?

昨天一開始有探討選擇 Rust 的理由,那麼選擇一個合適的 Web 框架也是至關重要的。截至目前為止,Actix Web 在 GitHub 上所獲得的星星數是 18.5k,在所有 Rust Web 框架中屬於前段班,這也代表 Actix Web 是一個熱門並且有一定使用者的開源專案,以下也是為什麼選擇 Actix Web 的一些優點:

  • 高效能:Actix Web 的效能不只是在 Rust 開發圈屬於領頭羊,並且在眾多語言的 Web 框架中也是出了名的高效能。這意味著我們可以用較少的資源達到更多的請求處理。
  • 非同步支持:利用 Rust 的非同步特性,Actix Web 能夠輕鬆地處理高並發的網頁應用。
  • Middleware 系統:例如錯誤處理、日誌記錄或認證等功能都變得簡單且模組化。

安裝 Actix Web

那麼我們就來建立一個新的 Rust 專案吧!這個專案我們命名為 "qr-code-generator",新增完之後就移動到專案目錄中。

$ cargo new qr-code-generator
$ cd qr-code-generator

接下來安裝方式可以直接在 Terminal 執行:

$ cargo add actix-web

Cargo 就會安裝 Actix Web 最新的穩定版本到 Rust 專案中。

或者,也可以在專案中根目錄下的 cargo.toml,並且在 [dependencies] 區塊下面加入以下文字,那個數字代表的是目前的版本:

[dependencies]
actix-web = "4"

然後,執行 cargo build 或是 cargo run,讓 Cargo 為你安裝這個套件。

建立你的第一個 Actix Web 應用

老規矩,開始的第一步都先從建立一個簡單的 "Hello World" 開始吧!

找到 main.rs 後,並把裡面的程式碼全部替換成以下:

use actix_web::{get, App, HttpResponse, HttpServer, Responder};

#[get("/")]
async fn hello() -> impl Responder {
    HttpResponse::Ok().body("Hello, World!")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(hello)
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

接下來在 Terminal 執行 cargo run。現在,可以打開瀏覽器,在 URL 路徑輸入 http://127.0.0.1:8080,沒意外的話應該就可以看到 "Hello, World!" 顯示在畫面上。

結語

今天我們建立了基於 Actix Web 的第一個應用。雖然現在只是一個簡單的 "Hello World",但這是建構我們 QR Code 製造機的重要基石。

明天,將會繼續開發我們的專案,加入產生 QR Code 的功能,敬請期待!


上一篇
Day 1 - 設定 Rust 和 Cargo 的開發環境
下一篇
Day 3 - Rust 如何製作 QR Code
系列文
30 天用 Rust 打造 QR Code 製造機30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言