
什么是API产品?
在构建现代 API 服务器时,TypeScript、Go 和 Rust 是当前社区中最受欢迎的三种语言,各有优缺点:
尽管 Rust 学习曲线较陡,但其类型安全性和高性能特性使其成为构建高效、可靠 API 服务器的理想选择。
Rust 的类型系统强制开发者为所有数据类型提供完整定义,或者明确选择通用类型(如 serde_json::Value
)。这种严格的类型检查显著降低了运行时错误的可能性,相比 TypeScript 更可靠。
Rust 执行速度接近 C/C++,且无需垃圾回收机制,内存管理高效。在垂直扩展场景中,Rust API 相较 Node.js 更具优势,可降低基础设施成本和复杂性。
虽然 Rust 的开发效率可能低于 TypeScript,但在处理数据库交互时,如使用 MongoDB 时无需额外库(如 Mongoose),简化了开发流程。高类型安全性还能降低长期维护成本。
在本教程中,我们选择 MongoDB 作为数据库,原因如下:
如需手动安装 MongoDB,可参考其官方安装指南。
我们将构建一个用于管理遛狗预约的 API,主要数据结构和功能如下:
确保系统已安装 Rust 和 Cargo:
rustc --version
cargo --version
使用 Cargo 创建新项目:
cargo new rust-web-server-tutorial
在 Cargo.toml
中添加依赖:
在 main.rs
添加 HTTP 服务器示例,并绑定到 http://localhost:5001
。
使用 cargo watch
实时监控代码更改并自动运行:
cargo watch -c -w src -x run
访问 http://localhost:5001
,应看到返回文本“Hello Medium!”。
项目模块化结构:
rust-web-server-tutorial/
└── src/
├── main.rs
├── models/
│ ├── booking_model.rs
│ ├── dog_model.rs
│ ├── mod.rs
│ └── owner_model.rs
├── routes/
│ ├── booking_route.rs
│ ├── dog_route.rs
│ ├── mod.rs
│ └── owner_route.rs
└── services/
├── db.rs
└── mod.rs
创建文件命令:
cd src && \
mkdir models routes services && \
touch models/booking_model.rs models/dog_model.rs models/mod.rs models/owner_model.rs && \
touch routes/booking_route.rs routes/dog_route.rs routes/mod.rs routes/owner_route.rs && \
touch services/db.rs services/mod.rs && \
cd ..
Booking
数据结构表示预约记录,并使用 BookingRequest
结构体支持数据转换(实现 TryFrom
特性)。
Owner
数据结构包含姓名、地址和联系方式,可选字段使用 Option
类型。
Dog
数据结构记录宠物基本信息。
在 mod.rs
中公开模型供其他模块使用。
在 services/db.rs
中定义 Database
结构体:
在 routes
中创建路由文件:
在 mod.rs
中公开路由,并在 main.rs
中连接到 HTTP 服务器。
使用 Postman 或 cURL 测试 API:
curl -X POST http://localhost:5001/owner -H "Content-Type: application/json" -d '{"name": "John Doe", "address": "123 Main St"}'
确保 API 功能正常运行。
本教程展示了如何使用 Rust 和 Actix 构建高性能 API 服务器,并结合 MongoDB 管理数据存储。Rust 的类型安全和执行速度优势,使其成为构建可靠网络服务的理想选择。
原文链接: https://www.bretcameron.com/blog/how-to-build-an-api-server-with-rust