項目架構(gòu)

該項目采用清潔架構(gòu)原則,強調(diào)關(guān)注點分離,確保框架、數(shù)據(jù)庫和其他服務(wù)的獨立性。這種設(shè)計使核心業(yè)務(wù)邏輯獨立于外部服務(wù),便于測試和維護,同時也能在需要時替換外部依賴。


項目結(jié)構(gòu)

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


使用的技術(shù)棧


跨源資源共享(CORS)

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


REST API 端點

公共端點

身份驗證

用戶

賬戶

交易


API 錯誤處理

錯誤響應(yīng)格式

所有錯誤響應(yīng)均采用結(jié)構(gòu)化格式,確保一致性和清晰度。其字段包括:

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

錯誤響應(yīng)示例

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


配置和設(shè)置

服務(wù)配置

Redis 配置

PostgreSQL 配置

JWT 配置


使用 JWT 進行身份驗證和授權(quán)

JWT 以其高效性和無狀態(tài)特性被廣泛用于身份驗證和授權(quán)。其優(yōu)點包括:

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

項目中實現(xiàn)了以下功能:


數(shù)據(jù)存儲與操作

使用 Redis 內(nèi)存存儲

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

使用 PostgreSQL 和 SQLx

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

項目中包括以下數(shù)據(jù)庫操作示例:


日志記錄

通過設(shè)置環(huán)境變量 RUST_LOG,可以指定服務(wù)啟動時的日志級別。


優(yōu)雅關(guān)機

Axum 支持優(yōu)雅關(guān)機,通過 with_graceful_shutdown 方法監(jiān)聽 SIGINT 和 SIGTERM 信號,確保服務(wù)安全關(guān)閉。


測試

數(shù)據(jù)庫隔離測試

每次測試前后都會設(shè)置和清理數(shù)據(jù)庫狀態(tài),確保測試的獨立性。

按順序運行測試

測試按預(yù)定義順序執(zhí)行,避免依賴問題。


構(gòu)建與運行服務(wù)

開發(fā)模式

在開發(fā)模式下運行服務(wù),便于調(diào)試和快速迭代。

發(fā)布模式

發(fā)布模式啟用編譯器優(yōu)化,顯著提升性能并減小二進制文件大小。建議在生產(chǎn)環(huán)境中使用發(fā)布模式運行服務(wù)。


使用 Docker 部署

運行 PostgreSQL 和 Redis 服務(wù)

通過 Docker 容器運行數(shù)據(jù)庫服務(wù),簡化部署流程。

構(gòu)建 API 服務(wù)

使用 Rust 官方鏡像構(gòu)建 API 服務(wù)。

全棧部署

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


持續(xù)集成(CI)

項目使用 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

上一篇:

使用 Grape 在 Ruby on Rails 中構(gòu)建 RESTful API

下一篇:

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

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

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

#AI深度推理大模型API

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

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