Skip to main content

开始

安装 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/或在定义的任何其他路由来查看结果。