鍵.png)
使用NestJS和Prisma構(gòu)建REST API:身份驗證
該項目采用清潔架構(gòu)原則,強調(diào)關(guān)注點分離,確保框架、數(shù)據(jù)庫和其他服務(wù)的獨立性。這種設(shè)計使核心業(yè)務(wù)邏輯獨立于外部服務(wù),便于測試和維護,同時也能在需要時替換外部依賴。
項目的主要組成部分包括:
src
:包含主應(yīng)用程序代碼。項目中的 CORS 配置允許任何來源、任何方法和任何標(biāo)頭。您可以根據(jù)需求自定義這些設(shè)置,以確保安全性和靈活性。
POST /v1/auth/login
GET /v1/users
GET /v1/accounts
POST /v1/transactions/transfer
所有錯誤響應(yīng)均采用結(jié)構(gòu)化格式,確保一致性和清晰度。其字段包括:
每個錯誤條目可能包含以下字段:
user_not_found
)。resource_not_found
)。錯誤響應(yīng)可以包含多個錯誤條目,這對于用戶界面的清晰指引非常有幫助。此外,trace_id
字段便于在日志中追蹤錯誤。
JWT 以其高效性和無狀態(tài)特性被廣泛用于身份驗證和授權(quán)。其優(yōu)點包括:
然而,JWT 的無狀態(tài)特性也帶來了一些挑戰(zhàn),例如無法在令牌過期前撤銷令牌。為解決此問題,可以使用 Redis 維護服務(wù)器端黑名單,從而實現(xiàn)令牌的強制失效。
項目中實現(xiàn)了以下功能:
Redis 用于緩存和會話管理,支持高效的數(shù)據(jù)存儲和檢索。
PostgreSQL 是一個功能強大的開源關(guān)系型數(shù)據(jù)庫,支持高級數(shù)據(jù)類型和性能優(yōu)化。SQLx 是一個異步的 Rust SQL 工具,支持編譯時查詢檢查,減少運行時錯誤。
項目中包括以下數(shù)據(jù)庫操作示例:
通過設(shè)置環(huán)境變量 RUST_LOG
,可以指定服務(wù)啟動時的日志級別。
Axum 支持優(yōu)雅關(guān)機,通過 with_graceful_shutdown
方法監(jiān)聽 SIGINT 和 SIGTERM 信號,確保服務(wù)安全關(guān)閉。
每次測試前后都會設(shè)置和清理數(shù)據(jù)庫狀態(tài),確保測試的獨立性。
測試按預(yù)定義順序執(zhí)行,避免依賴問題。
在開發(fā)模式下運行服務(wù),便于調(diào)試和快速迭代。
發(fā)布模式啟用編譯器優(yōu)化,顯著提升性能并減小二進制文件大小。建議在生產(chǎn)環(huán)境中使用發(fā)布模式運行服務(wù)。
通過 Docker 容器運行數(shù)據(jù)庫服務(wù),簡化部署流程。
使用 Rust 官方鏡像構(gòu)建 API 服務(wù)。
通過 Docker Compose 部署 API、PostgreSQL 和 Redis 服務(wù)的完整棧。
項目使用 GitHub Actions 實現(xiàn)持續(xù)集成,自動化以下任務(wù):
源代碼可以在 GitHub 上找到:https://github.com/sheroz/axum-rest-api-sample
原文鏈接: http://sheroz.com/pages/blog/rust-axum-rest-api-postgres-redis-jwt-docker.html
使用NestJS和Prisma構(gòu)建REST API:身份驗證
深入解析API網(wǎng)關(guān)策略:認證、授權(quán)、安全、流量處理與可觀測性
深入解析 DeepSeek API 密鑰:獲取、使用與最佳實踐
使用 FastAPI 和 RabbitMQ 構(gòu)建端到端微服務(wù):綜合指南
DeepSeek+dify 工作流應(yīng)用,自然語言查詢數(shù)據(jù)庫信息并展示
API 認證:JWT、OAuth 與 API KEY對比
微信API接口調(diào)用憑證+Access token泄露
WebSocket和REST的區(qū)別:功能、適用范圍、性能與示例解析
如何使用 DeepSeek 構(gòu)建 AI Agent:終極指南