一文搞懂 body.title.clone()

一文搞懂 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,
}

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA EN