項目架構

該項目采用清潔架構原則,強調關注點分離,確保框架、數據庫和其他服務的獨立性。這種設計使核心業務邏輯獨立于外部服務,便于測試和維護,同時也能在需要時替換外部依賴。


項目結構

項目的主要組成部分包括:


使用的技術棧


跨源資源共享(CORS)

項目中的 CORS 配置允許任何來源、任何方法和任何標頭。您可以根據需求自定義這些設置,以確保安全性和靈活性。


REST API 端點

公共端點

身份驗證

用戶

賬戶

交易


API 錯誤處理

錯誤響應格式

所有錯誤響應均采用結構化格式,確保一致性和清晰度。其字段包括:

每個錯誤條目可能包含以下字段:

錯誤響應示例

錯誤響應可以包含多個錯誤條目,這對于用戶界面的清晰指引非常有幫助。此外,trace_id 字段便于在日志中追蹤錯誤。


配置和設置

服務配置

Redis 配置

PostgreSQL 配置

JWT 配置


使用 JWT 進行身份驗證和授權

JWT 以其高效性和無狀態特性被廣泛用于身份驗證和授權。其優點包括:

然而,JWT 的無狀態特性也帶來了一些挑戰,例如無法在令牌過期前撤銷令牌。為解決此問題,可以使用 Redis 維護服務器端黑名單,從而實現令牌的強制失效。

項目中實現了以下功能:


數據存儲與操作

使用 Redis 內存存儲

Redis 用于緩存和會話管理,支持高效的數據存儲和檢索。

使用 PostgreSQL 和 SQLx

PostgreSQL 是一個功能強大的開源關系型數據庫,支持高級數據類型和性能優化。SQLx 是一個異步的 Rust SQL 工具,支持編譯時查詢檢查,減少運行時錯誤。

項目中包括以下數據庫操作示例:


日志記錄

通過設置環境變量 RUST_LOG,可以指定服務啟動時的日志級別。


優雅關機

Axum 支持優雅關機,通過 with_graceful_shutdown 方法監聽 SIGINT 和 SIGTERM 信號,確保服務安全關閉。


測試

數據庫隔離測試

每次測試前后都會設置和清理數據庫狀態,確保測試的獨立性。

按順序運行測試

測試按預定義順序執行,避免依賴問題。


構建與運行服務

開發模式

在開發模式下運行服務,便于調試和快速迭代。

發布模式

發布模式啟用編譯器優化,顯著提升性能并減小二進制文件大小。建議在生產環境中使用發布模式運行服務。


使用 Docker 部署

運行 PostgreSQL 和 Redis 服務

通過 Docker 容器運行數據庫服務,簡化部署流程。

構建 API 服務

使用 Rust 官方鏡像構建 API 服務。

全棧部署

通過 Docker Compose 部署 API、PostgreSQL 和 Redis 服務的完整棧。


持續集成(CI)

項目使用 GitHub Actions 實現持續集成,自動化以下任務:


源代碼可以在 GitHub 上找到:https://github.com/sheroz/axum-rest-api-sample

原文鏈接: http://sheroz.com/pages/blog/rust-axum-rest-api-postgres-redis-jwt-docker.html

上一篇:

使用 Grape 在 Ruby on Rails 中構建 RESTful API

下一篇:

五大PHP REST API框架
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費