一文搞懂 body.title.clone()
六月 20, 2026
rust actix-web rest-api web-development performance backend devops programming-languages
Rust + Actix-web:写出跑得飞快、还能真正扛住压力的 API
说实话,大家平时要做个 REST API,十有八九会选 Node.js 或者 Python。为啥?上手快啊,轮子多,生态成熟。
但这里头有个隐藏的代价:你是在用开发者体验换性能。快速原型是爽了,真要上生产跑几千个并发请求,心里还是有点虚。
那有没有两全其美的办法?
Rust + Actix-web 就是这个问题的答案。
为什么选 Rust 做 API?(说点大实话)
在动手写代码之前,得先把丑话说前头:Rust 这门语言,上手门槛不低。编译器特别较真,动不动就拿"所有权"、"生命周期"这些概念来刁难你。刚开始写代码的时候,大概率会被 borrow checker 折磨得怀疑人生。
但我想明白一件事:Rust 让你不用在"安全"和"速度"之间二选一。
什么意思呢?你的 API 默认就是内存安全的——不会有空指针异常,不会有数据竞争,更不会有 GC 垃圾回收突然卡你一下。想象一下,当你服务几千个并发请求的时候,每个请求的响应时间都是稳定可预期的。这种确定性,对做系统的人来说太重要了。
对于初创公司和正在扩张系统的开发者来说,这就意味着:性能是可以预测的,还不用额外搭一套安全防护层。
Actix-web 怎么玩
Actix-web 这个框架,设计上借鉴了 Elixir/Phoenix 的思想,用的是 Actor 模型。但它的 API 写起来其实挺顺手的,你要是用过 Express 或者 Fastify,上手不会有太大落差。
搭建项目
cargo new rust-api-demo
cd rust-api-demo
cargo add actix-web actix-rt
写个最简单的接口
use actix_web::{web, App, HttpServer, HttpResponse};
async fn health_check() -> HttpResponse {
HttpResponse::Ok().json(serde_json::json!({
"status": "healthy",
"version": env!("CARGO_PKG_VERSION")
}))
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.route("/health", web::get().to(health_check))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
就这么几行代码,编译起来飞快,启动时间按微秒算。
跑一下 cargo run,然后访问 localhost:8080/health,JSON 返回几乎是秒到的。
整一个真正的 API:Todo 增删改查
光写个健康检查太没意思了,来搞个完整的 Todo API,带 CRUD。
先定数据结构
use serde::{Deserialize, Serialize};
use std::sync::Mutex;
use std::cell::Cell;
#[derive(Clone, Serialize, Deserialize)]
struct Todo {
id: u64,
title: String,
completed: bool,
}