想自動(dòng)生成「干凈架構(gòu)」目錄模板?用「代碼生成」提示詞,30 秒即可拿到 domain/infra/web 分層模板,再交給「代碼優(yōu)化」砍掉冗余模塊,編譯速度提升 20%!
| 模塊 | 職責(zé) | 關(guān)鍵技術(shù) |
|---|---|---|
| 用戶與賬戶服務(wù) | 注冊(cè)、登錄、賬戶管理 | Axum + SQLx |
| OTP 服務(wù) | 6 位隨機(jī)數(shù) + Redis 緩存 | rand + redis |
| 郵件服務(wù) | 發(fā)送 OTP 與通知 | lettre + SMTP |
| Token 服務(wù) | 生成/驗(yàn)證 Paseto | paseto + chrono |
| REST API | 路由、中間件、錯(cuò)誤處理 | Axum + tower |
?? AI 審查
把「OTP 緩存邏輯」提交評(píng)審?「代碼審查助手」可自動(dòng)檢查 TTL、并發(fā)安全,提前發(fā)現(xiàn) 80% 潛在 Bug!
// 偽代碼
pub async fn login_otp(email: String, otp: String, redis: &RedisPool) -> Result<String, ApiError> {
let cached: Option<String> = redis.get(&email).await?;
match cached {
Some(c) if c == otp => {
redis.del(&email).await?; // 一次性刪除
Ok(paseto_token(email)?)
}
_ => Err(ApiError::InvalidOtp),
}
}
| 功能 | 庫(kù) | 說(shuō)明 |
|---|---|---|
| 驗(yàn)證 | validator |
結(jié)構(gòu)體級(jí)別校驗(yàn) |
| JSON | serde |
序列化/反序列化 |
| 數(shù)據(jù)庫(kù) | sqlx + redis |
PostgreSQL + Redis 連接池 |
| 遷移 | sqlx-cli |
編譯時(shí)檢查 SQL |
| 郵件 | lettre |
SMTP 客戶端 |
| 日志 | tracing |
結(jié)構(gòu)化日志 |
| 配置 | config + dotenv |
環(huán)境變量 |
| HTTP | axum |
Web 框架 |
| Token | paseto |
安全令牌 |
性能與穩(wěn)定性
Rust 內(nèi)存安全 + 零成本抽象,幾乎杜絕運(yùn)行時(shí)崩潰。
類型安全到數(shù)據(jù)庫(kù)
使用 sqlx 編譯時(shí)檢查查詢,避免 SQL 邏輯錯(cuò)誤。
錯(cuò)誤處理優(yōu)雅
Result + ? 運(yùn)算符,輕松映射到 HTTP 狀態(tài)碼。
庫(kù)生態(tài)豐富
每個(gè)功能點(diǎn)均有 2+ 成熟庫(kù)可選,質(zhì)量高且維護(hù)活躍。
| 挑戰(zhàn) | 說(shuō)明 | 緩解方案 |
|---|---|---|
| 代碼復(fù)雜性 | 需手動(dòng)實(shí)現(xiàn) Validate + FromRequest |
使用 axum-valid 宏減少樣板 |
| 測(cè)試?yán)щy | 難以 Mock 外部庫(kù)結(jié)構(gòu)體 | 引入 mockall 或?qū)懡涌趯?/td>
|
| 編譯速度 | 增量編譯仍需數(shù)秒 | 使用 cargo nextest + 并行編譯 |
| 學(xué)習(xí)曲線 | 借用檢查器 + 生命周期概念多 | 官方 Book + Rustlings 刷題 |
? AI 補(bǔ)救
把「錯(cuò)誤映射到 HTTP 狀態(tài)碼」寫(xiě)進(jìn)注釋太麻煩?用「代碼文檔生成器」提示詞,自動(dòng)在函數(shù)頭部生成標(biāo)準(zhǔn)注釋,提醒后續(xù)接入axum-valid,文檔一鍵達(dá)標(biāo)!
Rust 最適合:
普通 CRUD 業(yè)務(wù):
cargo runsqlx migrate add 新增字段 → 體驗(yàn)編譯時(shí)檢查mockall → 寫(xiě)單元測(cè)試覆蓋 OTP 邏輯cargo nextest → 并行跑測(cè)試,縮短 CI 時(shí)間cargo-audit 檢查依賴漏洞今晚就動(dòng)手,明天即可向團(tuán)隊(duì)展示「零崩潰」的 Rust 后端 Demo!??
原文鏈接: https://bovolato.dev/blog/rust/rest-api-in-rust-2023/