开始
安装 Rust
如果您还没有 Rust,我们建议您使用 Rustup 来管理 Rust 安装。官方 Rust 指南是一个很棒的入门教程。
Actix Web 目前支持的最低 Rust 版本为 1.59。运行 rustup update
将确保您拥有最新和最棒的 Rust 版本。因此,本指南假定你已经运行 Rust 1.59 或更高版本。
Hello, world!
首先,创建一个新的基于二进制的 Cargo 项目并切换到新目录:
cargo new hello-world
cd hello-world
你可以将以下依赖项添加到项目中的 cargo.toml
文件中:
[dependencies]
actix-web = "4"
请求处理程序使用接受零个或多个参数的异步函数。 这些参数可以从请求中提取(请参见 FromRequest trait),并返回可以转换为 HttpResponse 的类型(请参见 Responder trait):
请将 src/main.rs
的内容替换为以下内容:
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
#[get("/")]
async fn hello() -> impl Responder {
HttpResponse::Ok().body("Hello world!")
}
#[post("/echo")]
async fn echo(req_body: String) -> impl Responder {
HttpResponse::Ok().body(req_body)
}
async fn manual_hello() -> impl Responder {
HttpResponse::Ok().body("Hey there!")
}
请注意,其中一些处理程序使用内置宏直接附加了路由信息。这些允许您指定处理程序应该响应的方法和路径。您将在下面看到如何注册manual_hello(即不使用路由宏的路由)。
接下来,创建一个 App
实例并注册请求处理程序。 对于使用路由宏的处理程序,请使用 App::service
,对于手动路由的处理程序,请使用 App::route
,声明路径和方法。 最后,使用 HttpServer
启动应用程序,该服务器将使用您的 App 作为“应用程序工厂”来处理传入的请求。
将下面代码复制到src/main.rs
:
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(hello)
.service(echo)
.route("/hey", web::get().to(manual_hello))
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
使用cargo run
编译并运行程序。#[actix_web::main]
宏在actix运行时中执 行异步主函数。现在,你可以转到http://127.0.0.1:8080/
或在定义的任何其他路由来查看结果。