Rust 另一個網絡框架 Ntex
Ntex 是一個強大而務實的框架。從所有的意圖和目的來看,這是一個微型框架。如果你已經是一名 Rust 程序員,你可能會很快發現它似曾相識,即使你來自另一種編程語言,你也應該發現 Ntex 很容易上手。
使用 Ntex 開發的應用程序生成的執行文件中內嵌 HTTP 服務器。您也可以將其放在另一個 HTTP 服務器(如 nginx)後面。內嵌的 HTTP 服務器可以提供 HTTP/1 和 HTTP/2 支持以及 TLS(HTTPS)。這對於構建可供生產的小型服務非常有用。
Ntex 除了 HTTP 服務,還有其它幾種實現方式,例如:
ntex-grpc grpc 客戶端 / 服務器框架
ntex-redis redis 客戶端
ntex-mqtt 適用於 v5 和 v3.1.1 協議的 mqtt 客戶機 / 服務器框架
Ntex 運行在 Rust 1.65 或更高版本上,它可以與穩定的版本配合使用。
使用 Ntex 時必須選擇異步運行時,選項包括:tokio,async-std,glommio。
演示一個 HelloWorld 示例,首先在 Cargo.toml 文件中添加依賴。
[dependencies]
ntex = { version = "0.6", features = ["tokio"] }
請求處理器使用異步函數,可接受零個或多個參數,這些參數可以從請求提取,並且返回的內容可以轉換爲 HttpResponse。可以在處理器上添加內置宏指示路由信息。
use ntex::web;
#[web::get("/")]
async fn hello() -> impl web::Responder {
web::HttpResponse::Ok().body("Hello world!")
}
#[web::post("/echo")]
async fn echo(req_body: String) -> impl web::Responder {
web::HttpResponse::Ok().body(req_body)
}
async fn manual_hello() -> impl web::Responder {
web::HttpResponse::Ok().body("Hey there!")
}
我們創建 App 實例並註冊請求處理器,使用 App::service 處理使用了路由宏的處理器,使用 App::route 需手動處理路由,定義路徑和方法。最後,應用啓動使用內置的 HttpServer,它對進入的請求進行服務。
#[ntex::main]
async fn main() -> std::io::Result<()> {
web::HttpServer::new(|| {
web::App::new()
.service(hello)
.service(echo)
.route("/hey", web::get().to(manual_hello))
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
好熟悉的味道,和 Axum 好像。又有點不同,每個網絡框架都有自己的味道,都有自己的擁躉者。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/JxV45XxUgZK4nT_B5g9HIA