30分钟内用Rust编写REST API:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么选择 Rust 构建 REST API?



Rust 是一种现代系统编程语言,它结合了 C++ 的性能和编译阶段保证的内存安全。近年来,Rust 被广泛应用于构建高负载的 Web 服务和微服务。本文将展示如何在 30 分钟内使用 Actix-web 框架和 Serde 库,用 Rust 编写一个完整的 REST API。



为什么选择 Rust 来构建你的 API?



  • 性能: Rust 的运行效率与 C/C++ 相当,这对高负载系统至关重要。
  • 安全性: 所有权(ownership)和借用(borrowing)机制消除了与内存相关的整类错误。
  • 异步支持: 内置的 async/await 支持能够高效处理数千个并发连接。
  • 生态系统: Cargo(包管理器)和 crates.io 使依赖管理变得简单便捷。


我们将创建一个简单的任务列表(Todo list)管理 API,支持 CRUD 操作。你将学习如何配置路由、处理 JSON 以及管理应用状态。



步骤 1:项目设置与依赖安装



首先,使用 Cargo 创建一个新的 Rust 项目。打开终端并执行:



cargo new rust_todo_apicd rust_todo_api


现在编辑 Cargo.toml 文件,添加必要的依赖:



[package]name = "rust_todo_api"version = "0.1.0"edition = "2021"

[dependencies]actix-web = "4"serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"tokio = { version = "1", features = ["full"] }uuid = { version = "1", features = ["v4"] }


我们来分析每个库的作用:



  • actix-web — 高性能的异步 Web 框架。
  • serde — 用于数据序列化和反序列化的库(JSON)。
  • serde_json — 为 serde 提供 JSON 格式支持。
  • tokio — Rust 的异步运行时(actix-web 默认使用它)。
  • uuid — 为我们的任务生成唯一标识符。


添加依赖后,执行 cargo build 以下载并编译所有包。首次运行可能需要几分钟。



步骤 2:创建数据模型与应用结构



创建 src/main.rs 文件,定义任务模型。我们将使用包含 id、title 和 completed 字段的 TodoItem 结构体:



use actix_web::{web, App, HttpServer, HttpResponse, middleware};use serde::{Deserialize, Serialize};use std::sync::Mutex;use uuid::Uuid;

#[derive(Debug, Serialize, Deserialize, Clone)]struct TodoItem { id: String, title: String, completed: bool,}

#[derive(Debug, Deserialize)]struct CreateTodoRequest { title: String,}

#[derive(Debug, Deserialize)]struct UpdateTodoRequest { title: Option<String>, completed: Option<bool>,}

struct AppState { todos: Mutex<Vec<TodoItem>>,}


注意以下重要细节:



  • Serialize 和 Deserialize — serde 的 trait,用于自动生成处理 JSON 的代码。
  • Mutex — 用于在多线程环境中安全地访问共享状态。
  • Uuid — 为每个任务生成唯一标识符。


现在添加 main 函数,用于启动服务器并初始化状态:



#[actix_web::main]async fn main() -> std::io::R                

博客

书籍推荐