
Yahoo Finance API – 完整指南
GitHub:https://github.com/sheroz/axum-rest-api-sample
Rust 近年来的受欢迎程度持续攀升。作为一种功能强大且经过验证的编程语言,Rust 提供了高效、安全的软件开发解决方案,同时避免了垃圾回收器的开销。随着 Rust 2024 版本的发布,这种趋势预计将进一步加速,巩固其在技术领域的地位。
Rust 在开发任务关键型 Web 后端组件或系统时表现尤为出色,尤其是在需要高效性能、一致资源消耗和强大安全性的场景中。然而,对于新手开发者来说,学习 Rust 及其不断扩展的生态系统可能需要一定的时间和努力。
本文将通过一个示例项目,演示如何使用 Axum 框架、JSON Web Tokens(JWT)、SQLx、PostgreSQL 和 Redis 构建一个 REST API Web 服务。该项目支持基于 JWT 的身份验证与授权、异步数据库操作、账户间转账示例,以及结构化的 API 错误处理。
该项目采用清洁架构原则,强调关注点分离,确保框架、数据库和其他服务的独立性。这种设计使核心业务逻辑独立于外部服务,便于测试和维护,同时也能在需要时替换外部依赖。
项目的主要组成部分包括:
src
:包含主应用程序代码。项目中的 CORS 配置允许任何来源、任何方法和任何标头。您可以根据需求自定义这些设置,以确保安全性和灵活性。
POST /v1/auth/login
GET /v1/users
GET /v1/accounts
POST /v1/transactions/transfer
所有错误响应均采用结构化格式,确保一致性和清晰度。其字段包括:
每个错误条目可能包含以下字段:
user_not_found
)。resource_not_found
)。错误响应可以包含多个错误条目,这对于用户界面的清晰指引非常有帮助。此外,trace_id
字段便于在日志中追踪错误。
JWT 以其高效性和无状态特性被广泛用于身份验证和授权。其优点包括:
然而,JWT 的无状态特性也带来了一些挑战,例如无法在令牌过期前撤销令牌。为解决此问题,可以使用 Redis 维护服务器端黑名单,从而实现令牌的强制失效。
项目中实现了以下功能:
Redis 用于缓存和会话管理,支持高效的数据存储和检索。
PostgreSQL 是一个功能强大的开源关系型数据库,支持高级数据类型和性能优化。SQLx 是一个异步的 Rust SQL 工具,支持编译时查询检查,减少运行时错误。
项目中包括以下数据库操作示例:
通过设置环境变量 RUST_LOG
,可以指定服务启动时的日志级别。
Axum 支持优雅关机,通过 with_graceful_shutdown
方法监听 SIGINT 和 SIGTERM 信号,确保服务安全关闭。
每次测试前后都会设置和清理数据库状态,确保测试的独立性。
测试按预定义顺序执行,避免依赖问题。
在开发模式下运行服务,便于调试和快速迭代。
发布模式启用编译器优化,显著提升性能并减小二进制文件大小。建议在生产环境中使用发布模式运行服务。
通过 Docker 容器运行数据库服务,简化部署流程。
使用 Rust 官方镜像构建 API 服务。
通过 Docker Compose 部署 API、PostgreSQL 和 Redis 服务的完整栈。
项目使用 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
Yahoo Finance API – 完整指南
WordPress REST API 内容注入漏洞分析
四款AI大模型API价格对比:DeepSeek R1、ChatGPT o3-mini、Grok3、通义千问 Max
四款AI大模型API基础参数、核心性能的区别:DeepSeek R1、ChatGPT o3-mini、Grok3、通义千问 Max
2025年多模态大模型API基础参数、核心性能:Deepseek、ChatGPT、文心一言
2025年最新推理大模型API价格对比:通义千问Max vs 豆包1.5 Pro vs 混元Lite
大模型新基座,基于FastAPI,利用Python开发MCP服务器
DeepSeek+ima:打造高效个人知识库,提升学习与工作效率
快速接入腾讯地图MCP Server