成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

2023 年值得關注的六個 Rust Web開發框架

開發 前端
Web 框架 (WF) 或 Web 應用程序框架 (WAF) 是一種軟件框架,旨在支持 Web 應用程序的開發,包括 Web 服務、Web 資源、微服務和 Web API。Web 框架提供了一種在網上構建和部署 Web 應用程序的標準方法。

在 2023 年,在開始開發 API 和 Web 應用程序之前,哪個 Rust Web 框架最適合研究?在這里,我們將看看一些目前使用或看起來很有前途的最流行的框架。

Web 框架 (WF) 或 Web 應用程序框架 (WAF) 是一種軟件框架,旨在支持 Web 應用程序的開發,包括 Web 服務、Web 資源、微服務和 Web API。Web 框架提供了一種在網上構建和部署 Web 應用程序的標準方法。Web 框架旨在自動化與 Web 開發中執行的常見活動相關的開銷。

例如,許多 Web 框架提供用于數據庫訪問、模板框架(HTML、JSON 等)和會話管理的庫,并且它們經常促進代碼重用。雖然它們通常針對動態網站的開發,但它們也適用于靜態網站。

Rust 是一種編程語言,為 Web 開發提供了巨大的潛力。它快速、安全,并為構建 Web 應用程序提供了許多完美的功能。以下是一些最佳框架及其開發需要考慮的功能。

Hyper

Hyper 仍在開發中,可能會在 2023 年穩定發布。但是 Hyper 看起來像是一個有前途的框架,可以在 2023 年探索,然后再決定在 Rust 中構建一個 Web 應用程序。

Hyper 計劃在 2023 年 1 月底發布穩定的 1.0 版本。如果您想了解有關遷移到穩定版 1.0 的更多信息,請關注這里

hyper 是一個用 Rust 編寫的快速 HTTP 實現。Hyper 可以用作:

  • 用于與 Web 服務通信的客戶端。
  • 用于構建這些 Web 服務的服務器。
  • 極快的響應速度
  • 具有高并發性和非阻塞套接字。
  • 支持 HTTP/1 和 HTTP/2。
use std::{convert::Infallible, net::SocketAddr, error::Error};
use http_body_util::Full;
use hyper::{Request, Response, body::Bytes, service::service_fn};
use hyper::server::conn::http1;
use tokio::net::TcpListener;

async fn hello(
    _: Request<hyper::body::Incoming>,
) -> Result<Response<Full<Bytes>>, Infallible> {
    Ok(Response::new(Full::new(Bytes::from("Hello World!"))))
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));

    let listener = TcpListener::bind(addr).await?;

    loop {
        let (stream, _) = listener.accept().await?;

        tokio::task::spawn(async move {
            if let Err(err) = http1::Builder::new()
                .serve_connection(stream, service_fn(hello))
                .await
            {
                println!("Error serving connection: {:?}", err);
            }
        });
    }
}

任何使用 rust API 框架的開發人員都需要了解 Hyper。它具有許多功能,并且易于使用。文檔也是一流的,是新開發人員的最佳的學習資源。

Actix-web

Actix Web 是一個強大、實用且速度極快的 Rust Web 框架。Actix Web 基于 Rust Actor Model。它是一個用 Rust 編寫的高性能 Web 框架,具有一組用于構建 Web 應用程序的強大功能。Actix Web 是類型安全的,功能豐富,可擴展和極快的。

它的活動網絡

  • 支持多路復用
  • 異步 I/O
  • 網絡套接字
  • 中間件支持

以下是編寫響應 Hello World 的網頁的方法:

use actix_web::{get, web, App, HttpRequest, HttpServer, Responder};

#[get("/")]
async fn index(\_req: HttpRequest) -> impl Responder {
"Hello from the index page."
}

async fn hello(path: web::Path<String>) -> impl Responder {
format!("Hello World {}!", &path)
}

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

運行 cargo run 就可以啟動服務器,然后在瀏覽器中查看效果。

Rocket

Rocket 是 Rust 的一個 Web 框架,它讓編寫 Web 應用程序變得非常簡單和快速,并且它不會犧牲靈活性和類型安全,它無樣板、且擴展易于使用。

Rocket 的哲學是讓您以最少的配置啟動和運行。它與 Rust 生態系統緊密集成,集成現有的庫和工具非常容易。

下面是在 url 部署的頁面示例,該頁面采用 JSON 有效負載并將其存儲在數據庫中。

以下是網頁實現的示例:PUT /:id

#[derive(Serialize, Deserialize)]
struct Message<'r> {
   contents: &'r str,
}

#[put("/<id>", data = "<msg>")]
fn update(db: &Db, id: Id, msg: Json<Message<'_>>) -> Value {
    if db.contains_key(&id) {
        db.insert(id, msg.contents);
        json!({ "status": "ok" })
    } else {
        json!({ "status": "error" })
    }
}

Rocket 支持模板,擁有專題手冊,支持異步流開箱即用。

Tide

Tide 是一個基于 Rust 構建的最小且實用的 Web 應用程序框架。Tide 是為快速 Web 開發而構建的。Tide 帶有一組強大的內置功能,可以輕松構建異步 Web 應用程序和 API。Tide 基于 rust actix Web 框架。

Tide 是功能豐富的 Web 框架。Tide 正在積極開發中,并擁有廣泛的社區資源,可讓您快速啟動和運行

Tide 框架具有以下功能,可幫助快速構建應用程序

  • 異步/等待支持
  • 類型安全路由
  • 請求守衛
  • 模板支持
  • 會話管理
  • 網絡套接字支持
  • 讓我們看一下使用 HTTP POST 謂詞實現端點的示例
use tide::Request;
use tide::prelude::*;

#[derive(Debug, Deserialize)]
struct Animal {
    name: String,
    legs: u16,
}

#[async_std::main]
async fn main() -> tide::Result<()> {
    let mut app = tide::new();
    app.at("/orders/shoes").post(order_shoes);
    app.listen("127.0.0.1:8080").await?;
    Ok(())
}

async fn order_shoes(mut req: Request<()>) -> tide::Result {
    let Animal { name, legs } = req.body_json().await?;
    Ok(format!("Hello, {}! I've put in an order for {} shoes", name, legs).into())
}

現在,您可以使用 curl 訪問具有 api /orders/shoes

curl localhost:8080/orders/shoes -d '{ "name": "Pankaj", "legs": 9 }'

這將響應預期的消息 Hello, Pankaj! I've put in an order for 9 shoes

Warp

Warp 是一個超級簡單、可組合的 Web 服務器框架,基于 Rust 構建,用于提高速度。Warp 突出的構建塊是 Filter,它可以組合和組合以表達對請求的豐富需求。

得益于其過濾系統,warp 提供開箱即用的功能:

  • 路徑路由和參數提取
  • 標頭要求和提取
  • 查詢字符串反序列化
  • JSON 和表單正文
  • 多部分表單數據
  • 靜態文件和目錄
  • 網絡套接字
  • 訪問日志記錄
  • Gzip、Deflate 和 Brotli 壓縮
  • 服務器發送的事件 (SSE)

由于它建立在 hyper 和 Tokio - 一個異步 Rust 運行時之上,因此您可以自動獲得:

  • HTTP/1 和 HTTP/2 支持
  • 異步功能
  • 最快的 HTTP 實現之一
  • 經過測試和正確

下面是一個使用 Warp 的簡單 Hello, world 示例:

//main.rs
use warp::Filter;
#[tokio::main]
async fn main() {
    // GET /hello/warp => 200 OK with body "Hello, warp!"
    let hello = warp::path!("hello" / String)
        .map(|name| format!("Hello, {}!", name));

    warp::serve(hello)
        .run(([127, 0, 0, 1], 3030))
        .await;
}

Axum

Axum Web 框架旨在高效,快速和輕量級。Axum 的靈感來自 Erlang 編程語言,為開發人員提供了高效的并發性,非常適合開發實時 Web 應用程序、微服務和低延遲系統。Axum 是一個專注于人體工程學和模塊化的 Web 應用程序框架。

要使用 Axum,您需要 Rust 版本 v1.6 或更高版本

Axum 的功能包括:

  • 使用無宏 API 將請求路由到處理程序。
  • 使用提取程序以聲明方式分析請求。
  • 簡單且可預測的錯誤處理模型。
  • 使用最少的樣板生成響應。
  • 充分利用中間件、服務和 tower-http。
  • 支持 WebSocket 和其他協議
  • 異步 I/O

use actix_web::{web, App, Responder};

fn index() -> impl Responder {

    "Hello, world!"

}

fn main() {

    App::new().route("/", web::get().to(index)).run();

}

上面列出的框架只是 2023 年值得關注的一些 rust Web 應用程序框架。它們都具有不同的設計能力。你嘗試測試它們并根據您的要求使用它們。

責任編輯:武曉燕 來源: 程序那些事兒
相關推薦

2024-02-01 00:21:41

Rust編程框架

2022-12-14 14:25:28

2022-12-14 14:18:52

2024-07-12 05:00:00

2023-06-05 00:25:32

2020-02-03 09:30:42

開發技能代碼

2023-03-20 14:52:48

2023-06-29 15:41:40

CSSWeb 開發

2022-12-29 11:33:49

2022-09-05 10:13:28

物聯網趨勢物聯網IOT

2022-08-15 10:21:44

機器學習人工智能

2015-03-09 15:51:47

WEB技術WEB 2015年

2022-12-04 23:48:24

JavaScrip框架編程語言

2023-03-05 16:57:04

2023-03-29 15:26:45

2023-04-03 11:30:12

云計算趨勢云平臺

2022-09-05 21:38:16

物聯網IoT

2023-08-24 09:00:00

Java編程

2019-01-02 08:35:42

開發者技能博客

2022-11-28 16:27:24

DevOps開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久久噜噜 | 亚洲日日| 91精品国产日韩91久久久久久 | 精品视频一区二区三区在线观看 | 在线国产一区二区 | 免费亚洲网站 | 波多野结衣精品 | 69福利影院| 天堂免费 | 国产高清精品网站 | 免费日韩av | 久久综合一区二区 | 国产精品一区二区三区久久久 | 视频一区二区在线观看 | 久久精品欧美一区二区三区不卡 | 日韩av一区二区在线观看 | 性一交一乱一伦视频免费观看 | 亚洲精品二三区 | www.亚洲一区| 国产精品美女久久久av超清 | 中文字幕免费中文 | 午夜激情免费视频 | 91久久精品一区二区二区 | 亚洲一区视频 | 欧美日韩国产精品激情在线播放 | 精品国产一级 | 日韩一区二区三区视频在线播放 | 午夜看看 | 亚洲毛片在线 | 亚洲看片网站 | 一区二区三区在线 | 国产成人精品一区二三区在线观看 | 91麻豆精品国产91久久久久久久久 | 免费国产视频在线观看 | 久久激情五月丁香伊人 | 亚洲一区不卡在线 | 99re免费 | 成人一区二区电影 | 国产成人福利 | 成年人视频在线免费观看 | 看a网站 |