在 Rust 中使用 Axum【译】
本文原文地址为 https://www.shuttle.rs/blog/2023/12/06/using-axum-rust Rust Web 生态系统中有如此多的后端 Web 框架,很难知道该选择什么。尽管在更早的过去,您可能会看到 Rocket 在受欢迎程度方面跃居排行榜首位,但现在通常是 Axum 和 actix-web 展开激烈的竞争,Axum 慢慢地登上了榜首。在本文中,我们将深入研究 Axum,这是一个由 Tokio 团队支持的用于制作 Rust REST API 的 Web 框架,它易于使用,并且与 Tower 具有超兼容性,Tower 是一个强大的可重用、模块化组件库,用于构建网络应用程序。 在本文中,我们将全面了解如何使用 Axum 编写 Web 服务。这也将包括 0.7 的更改。 Axum的路由 Axum 遵循 REST 风格的 API(例如 Express)的风格,您可以在其中创建处理函数并将它们附加到 axum 的 axum::Router 类型。路线的示例可能如下所示: async fn hello_world() -> &'static str { "Hello world!" } 然后我们可以将它添加到我们的路由器中,如下所示: use axum::{Router, routing::get}; fn init_router() -> Router { Router::new() .route("/", get(hello_world)) } 为了使处理函数有效,它需要是 axum::response::Response 类型或实现 axum::response::IntoResponse 。这已经针对大多数原始类型和 Axum 自己的所有类型实现了 - 例如,如果我们想要将一些 JSON 数据发送回用户,我们可以使用 Axum 的 JSON 类型作为返回类型来轻松实现这一点, axum::Json 类型包装了我们想要发回的任何内容。正如您在上面看到的,我们还可以单独返回一个字符串(切片)。...