MapFlow

PUBLIC LEARNING ROADMAP

Rust Axum 认证后端交付项目(PostgreSQL + 测试 + 部署) 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

39 个知识节点 · intermediate

发布者:qa6cacf3

知识目录

基础概念

Rust安装与环境配置

安装rustup、cargo、rust-analyzer与工具链,为后续全部练习搭建可运行环境

建议预留 60 分钟

学习目标

  • 安装Rust工具链并配置编辑器
  • 掌握cargo build/run基础命令

关键概念

  • rustup
  • cargo
  • rust-analyzer

为什么学习

  • 需要一次性配置好能编译运行的环境,后续每个练习都依赖此基础

如何检验理解

  • 能在终端运行cargo --version并成功用cargo new创建并运行hello项目

基础概念

变量、常量与数据类型

理解let绑定、不可变性与基本标量/复合类型,作为理解TypeScript差异的起点

建议预留 60 分钟

学习目标

  • 掌握变量绑定与基本类型
  • 理解mut与类型推断

关键概念

  • let绑定
  • 不可变性
  • 标量与复合类型

为什么学习

  • 是后续所有权理解的基础,靠日常编写即可掌握

如何检验理解

  • 能定义带类型标注的变量并解释为何默认不可变

基础概念

函数与控制流

函数定义、返回值、if/loop/match等控制结构,Rust中表达式优先的风格

建议预留 45 分钟

学习目标

  • 编写函数与表达式
  • 使用match与loop控制流

关键概念

  • 表达式
  • match
  • 控制流

为什么学习

  • 后端逻辑的基本载体,项目每个handler都用到

如何检验理解

  • 能编写带match分支与模式绑定返回值的函数

核心技能

所有权(Ownership)机制

所有权规则、移动与拷贝语义,Rust安全核心,也决定ts开发者对内存思考方式的转变

建议预留 90 分钟

学习目标

  • 理解所有权三规则
  • 识别移动与拷贝场景

关键概念

  • 所有权
  • 移动语义
  • 拷贝语义
  • 作用域

为什么学习

  • Rust区别于TS的核心心智模型,写任何代码都必须理解,否则无法通过编译器

如何检验理解

  • 能解释一次移动与拷贝发生的场景并预判编译错误

基础概念

Slice与String深入

&str与String区别、字节与UTF-8处理,后端处理HTTP请求体必需

建议预留 45 分钟

学习目标

  • 区分&str与String
  • 处理UTF-8字节

关键概念

  • &str
  • String
  • UTF-8

为什么学习

  • HTTP数据与SQL都是字符串,理解&str/String差异避免常见坑

如何检验理解

  • 能解释String vs &str并正确做切片操作

核心技能

借用(Borrowing)与引用

&引用、可变/不可变借用规则,是与所有权配合的安全访问机制

建议预留 90 分钟

学习目标

  • 理解借用规则
  • 使用&mut与不可变借用

关键概念

  • 引用
  • 借用规则
  • 可变借用

为什么学习

  • Axum handler大量用引用与借用,理解可变性规则是编译通过的必备

如何检验理解

  • 能正确写出单活跃可变借用并修复借用冲突编译错误

核心技能

生命周期(Lifetime)概念

生命周期注解与省略规则,理解借用存活范围

建议预留 90 分钟

学习目标

  • 理解生命周期标注
  • 应对借用冲突

关键概念

  • 生命周期注解
  • 省略规则
  • 借用存活

为什么学习

  • 解决借用冲突和结构体持有引用的关键,虽多数时代码由编译器推导仍需理解

如何检验理解

  • 能解释生命周期省略并修复需要显式标注的场景

基础概念

结构体与枚举

定义struct/enum、方法method、Option与Result基础,是建模用户与请求的基础形状

建议预留 75 分钟

学习目标

  • 定义struct与enum
  • 实现方法method

关键概念

  • struct
  • enum
  • impl与方法

为什么学习

  • 认证项目中的User模型、请求/响应结构都用它定义

如何检验理解

  • 能为用户实体定义struct并为其实现方法

基础概念

标准库集合类型

Vector、HashMap、HashSet常用API,存储与检索用户数据

建议预留 60 分钟

学习目标

  • 使用Vec与HashMap
  • 理解迭代与借用结合

关键概念

  • Vec
  • HashMap
  • HashSet

为什么学习

  • 业务中的列表与键值处理常用,API简单按需查阅

如何检验理解

  • 能用HashMap与Vec完成常用增删查操作

核心技能

模式匹配与Option/Result

深入match、unwrap/问号运算符与错误传播基础

建议预留 60 分钟

学习目标

  • 熟练使用match
  • 用?运算符处理Result

关键概念

  • 模式匹配
  • Option
  • Result
  • ?运算符

为什么学习

  • 数据库与请求都返回Result/Option,正确处理它们决定API健壮性

如何检验理解

  • 能用?运算符在多步Result链中简洁传播错误

核心技能

模块系统与cargo工程管理

mod组织、use导入、crate结构,管理认证项目的多文件组织

建议预留 60 分钟

学习目标

  • 组织mod
  • 管理cargo依赖

关键概念

  • mod
  • crate
  • use与pub

为什么学习

  • 把路由/handler/db/接口拆成模块是中型项目可维护的基础

如何检验理解

  • 能把项目拆分为多个mod并在crate间正确导入

核心技能

错误处理(Error Handling)

自定义错误类型与anyhow/thiserror,后端handler返回结构化错误的前提

建议预留 60 分钟

学习目标

  • 定义错误类型
  • 用anyhow/thiserror管理错误
  • 错误转HTTP响应

关键概念

  • anyhow
  • thiserror
  • 错误组合子
  • IntoResponse

为什么学习

  • 认证API需把内部错误映射为HTTP状态码,此能力是Axum错误响应的核心

如何检验理解

  • 能自定义错误枚举并实现IntoResponse把错误转为HTTP响应

核心技能

泛型与trait系统

泛型、trait定义/实现、trait对象,理解Axum和SQLx的抽象接口

建议预留 90 分钟

学习目标

  • 实现trait
  • 理解泛型约束
  • 认识trait对象

关键概念

  • trait
  • 泛型约束
  • trait对象
  • impl Trait

为什么学习

  • Axum提取器、SQLx查询、tower中间件都基于trait,理解它才能正确组合

如何检验理解

  • 能解释FromRequest等trait如何驱动Axum扩展

补充知识

宏(Macro)基础

声明式宏与过程宏入门,理解derive宏派生

建议预留 60 分钟

学习目标

  • 使用常用过程宏
  • 读懂derive派生

关键概念

  • derive宏
  • 过程宏
  • 声明式宏

为什么学习

  • 能使用derive(Serialize)等现成过程宏即可,不必深究宏实现

如何检验理解

  • 能正确使用derive宏派生serde等trait

补充知识

迭代器与闭包

Iterator适配器与闭包捕获,数据处理的高效惯用法

建议预留 60 分钟

学习目标

  • 使用迭代器适配器
  • 认识闭包捕获

关键概念

  • Iterator
  • 闭包
  • 适配器

为什么学习

  • 对TS开发者熟悉度较高且非项目交付核心,能读懂即可,需要时查阅

如何检验理解

  • 能读懂并写出map/filter链式调用处理集合

核心技能

智能指针与堆内存

Box、Arc、Mutex等智能指针与并发共享的基础

建议预留 120 分钟

学习目标

  • 理解Box与Rc语义
  • 使用Arc实现跨线程共享

关键概念

  • Box
  • Rc
  • Arc
  • Mutex
  • RefCell

为什么学习

  • Axum跨线程共享State依赖Arc,连接池与并发控制依赖这些类型

如何检验理解

  • 能解释Arc与Arc<Mutex>在共享状态中的应用场景

补充知识

面向对象风格与设计模式

trait对象多态、封装替代方案与惯用设计

建议预留 60 分钟

学习目标

  • 认识trait对象多态

关键概念

  • trait对象
  • 封装
  • 组合优于继承

为什么学习

  • 认证项目按功能分层即可,无需深入OOP风格,作为扩展认知保留

如何检验理解

  • 能识别trait对象作为多态替代的用法

核心技能

异步编程基础概念

Future、async/await语法、与线程/TS Promise的对比

建议预留 90 分钟

学习目标

  • 理解async/await
  • 认识Future生命周期

关键概念

  • async/await
  • Future
  • Send/Sync约束

为什么学习

  • Axum与SQLx都在async运行时上,理解Future与borrow的关系是写Async handler的钥匙

如何检验理解

  • 能解释async块的生命周期限制并写出可编译的异步函数

核心技能

Tokio运行时与任务模型

Tokio多线程运行时、task调度、spawn与主运行时引导

建议预留 120 分钟

学习目标

  • 配置Tokio运行时
  • 使用spawn创建并发任务

关键概念

  • Tokio
  • task
  • block_on
  • spawn

为什么学习

  • Axum应用由Tokio驱动,main入口与并行handler都依赖对其运行时的正确使用

如何检验理解

  • 能写出#[tokio::main]入口并理解task如何并行执行

基础概念

异步I/O与网络基础

TcpStream/AsyncRead/AsyncWrite基础,理解HTTP底层如何承载于异步I/O

建议预留 90 分钟

学习目标

  • 认识AsyncRead/Write
  • 理解网络承载

关键概念

  • AsyncRead
  • AsyncWrite
  • TcpStream

为什么学习

  • Axum封装了底层网络细节,本节点仅需理解其为HTTP服务提供异步承载

如何检验理解

  • 能解释HTTP请求如何被Tokio异步I/O处理

核心技能

配置管理与日志

环境变量、config库、tracing结构化日志体系

建议预留 60 分钟

学习目标

  • 管理环境配置
  • 接入tracing日志

关键概念

  • 环境变量
  • tracing
  • config

为什么学习

  • 区分开发/测试/生产环境配置是认证项目可交付与可部署的必备能力

如何检验理解

  • 能用环境变量配置数据库URL与密钥并跨环境区分

核心技能

异步共享状态与并发控制

Arc<Mutex/Tokio RwLock>共享状态、channel消息传递

建议预留 90 分钟

学习目标

  • 共享可变状态
  • 使用Mutex/RwLock
  • 并发安全

关键概念

  • Arc
  • Mutex
  • RwLock
  • channel

为什么学习

  • Axum以Arc共享State、连接池跨请求共享,需正确处理并发访问

如何检验理解

  • 能通过State共享Arc<Mutex>并在并发请求下安全读写

核心技能

HTTP服务器框架(Axum)

Axum路由、提取器、状态、中间件、响应构造

建议预留 120 分钟

学习目标

  • 定义Router与路由
  • 使用Extractor提取请求
  • 管理State与响应

关键概念

  • Router
  • Extractor
  • State
  • 响应构造

为什么学习

  • 交付项目的核心载体,全部认证端点都构建于此,需能自如组合各API

如何检验理解

  • 能构建含路由+状态+提取器的REST服务并正确处理请求

核心技能

序列化与数据格式(serde)

serde派生、JSON处理、DTO数据模型设计

建议预留 90 分钟

学习目标

  • serde JSON序列化
  • 设计DTO模型

关键概念

  • serde
  • JSON
  • DTO
  • Serialize/Deserialize

为什么学习

  • 所有HTTP请求/响应与数据库行都需要serde序列化映射为JSON

如何检验理解

  • 能为请求与响应结构定义serde派生并正确完成JSON转换

核心技能

RESTful API设计

端点设计、状态码、错误响应结构与资源命名规范

建议预留 45 分钟

学习目标

  • 设计REST端点
  • 规范化错误响应

关键概念

  • REST语义
  • 状态码
  • 响应结构

为什么学习

  • 认证API的注册/登录/资料端点需遵循清晰REST规范,errors响应一致

如何检验理解

  • 能设计并实现结构一致的JSON错误响应与合理状态码

核心技能

中间件与请求流水线

自定义中间件、日志、认证鉴权、超时与限流

建议预留 120 分钟

学习目标

  • 自定义中间件
  • 接入认证与限流

关键概念

  • Middleware
  • tower
  • 鉴权

为什么学习

  • 认证中间件与限流是本项目安全层的支柱,需能自定义中间件

如何检验理解

  • 能编写认证中间件对受保护路由做授权检查

核心技能

异步测试与调试

单元/集成测试、tokio::test、测试数据库与错误调试

建议预留 90 分钟

学习目标

  • 编写异步单元测试
  • 编写HTTP集成测试
  • 调试异步代码

关键概念

  • tokio::test
  • cargo test
  • 集成测试

为什么学习

  • 交付目标明确要求认证测试,把测试从验证手段提升为驱动开发的习惯

如何检验理解

  • 能写tokio::test异步测试并针对handler发送HTTP断言

核心技能

部署与服务上线

Docker容器化、环境构建、发布流程与运维要点

建议预留 60 分钟

学习目标

  • Docker构建Rust应用
  • 掌握发布流程

关键概念

  • Dockerfile
  • 发布流程
  • 运维要点

为什么学习

  • 交付目标包含部署,先掌握容器化与发布流程的整体认知

如何检验理解

  • 能说明Rust应用容器化的关键步骤与发布checklist

补充知识

Cargo workspace与工程规模化

多crate工作区、feature特性与release构建优化

建议预留 60 分钟

学习目标

  • 认识workspace
  • 了解feature

关键概念

  • workspace
  • feature
  • release构建

为什么学习

  • 单包认证项目暂不需要workspace,了解即可,规模扩大时再深化

如何检验理解

  • 能识别单一crate何时应拆分为workspace

核心技能

数据库访问(SQLx/PostgreSQL)

异步连接池、编译期查询校验、事务处理

建议预留 120 分钟

学习目标

  • 配置PgPool连接池
  • 参数化查询防注入
  • 事务处理

关键概念

  • PgPool
  • SQLx
  • 参数化查询
  • 事务

为什么学习

  • 认证项目直接依赖SQLx读写PostgreSQL用户表,连接池与查询是核心

如何检验理解

  • 能用SQLx连接池执行参数化查询并提交事务

核心技能

Web安全防护

防护SQL注入、XSS、CSRF、速率限制、输入校验

建议预留 90 分钟

学习目标

  • 防护SQL注入
  • 输入校验
  • 速率限制

关键概念

  • SQL注入
  • 参数化查询
  • CSRF
  • ratelimit

为什么学习

  • 认证接口直面攻击面,参数化查询与输入校验是可靠交付的安全底线

如何检验理解

  • 能说明并实现防SQL注入的参数化查询与登录速率限制

补充知识

性能优化与基准测试

连接池调优、索引优化、criterion基准与吞吐提升

建议预留 90 分钟

学习目标

  • 认识连接池调优
  • 理解索引优化

关键概念

  • 连接池
  • 索引
  • criterion

为什么学习

  • 对初版交付为nice-to-have,了解连接池与索引即可,深入优化待后期

如何检验理解

  • 能说明连接池大小与索引如何影响查询性能

核心技能

Docker多阶段构建与编排

Dockerfile多阶段构建Rust镜像、docker-compose编排App与PostgreSQL

建议预留 90 分钟

学习目标

  • 多阶段构建镜像
  • docker-compose编排
  • 环境联调

关键概念

  • Dockerfile
  • docker-compose
  • 多阶段构建

为什么学习

  • 交付脚本的落地实现,需能镜像构建并编排数据库+应用一体化启动

如何检验理解

  • 能写出多阶段Dockerfile并用docker-compose同时拉起应用与Postgres

核心技能

SQLx迁移与数据库建模

用sqlx migrate管理Schema版本演进,设计用户与会话表

建议预留 90 分钟

学习目标

  • 设计用户表
  • 编写并执行迁移
  • 回滚/演进schema

关键概念

  • sqlx migrate
  • DDL
  • schema演进

为什么学习

  • 认证项目的users表结构与迁移脚本是交付物的一部分,需能演进Schema

如何检验理解

  • 能编写迁移将新用户表纳入并通过迁移命令应用

核心技能

密码哈希与安全存储

使用argon2/bcrypt进行密码哈希与验证

建议预留 60 分钟

学习目标

  • argon2哈希密码
  • 安全比对校验

关键概念

  • argon2
  • bcrypt
  • 密码哈希

为什么学习

  • 注册/登录的核心,绝不明文存密码,是认证可靠性的关键技术点

如何检验理解

  • 能实现注册时哈希、登录时校验密码的完整流程

核心技能

CI/CD流水线

GitHub Actions自动构建、运行测试、clippy/fmt静态检查与镜像发布

建议预留 90 分钟

学习目标

  • 配置Actions
  • 集成clippy/fmt
  • 触发自动验证

关键概念

  • GitHub Actions
  • clippy
  • fmt
  • CI

为什么学习

  • 把测试与静态检查固化为自动验证,保证每次改动可交付

如何检验理解

  • 能配置GitHub Actions在push时跑测试与clippy并发布镜像

核心技能

JWT/会话认证与授权

JWT签发校验、认证中间件、角色权限控制

建议预留 120 分钟

学习目标

  • 签发与校验JWT
  • 实现认证中间件
  • 角色权限控制

关键概念

  • JWT
  • Bearer认证
  • 权限控制
  • 角色

为什么学习

  • 交付项目认证的主环节,实现签发token、保护路由与角色权限

如何检验理解

  • 能实现登录签发JWT并让受保护路由校验token决定授权

核心技能

端到端认证测试与测试数据库

基于测试数据库的注册/登录/鉴权端到端流程测试

建议预留 120 分钟

学习目标

  • 搭建测试数据库
  • 覆盖完整认证流程
  • 隔离测试环境

关键概念

  • 测试数据库
  • 端到端测试
  • 环境隔离

为什么学习

  • 交付目标的核心验证,用独立测试数据库跑完整认证流程断言

如何检验理解

  • 能启动测试库并跑通注册→登录→访问受保护路由的端到端测试

核心技能

认证API交付项目(里程碑)

整合全部能力交付可运行、已测试、可部署的用户认证API服务

建议预留 300 分钟

学习目标

  • 整合全栈能力产出交付物
  • 独立排查与解决集成问题

关键概念

  • 端到端集成
  • 交付验收
  • 质量保障

为什么学习

  • 最终交付物,综合验证路由/认证/数据库/测试/部署全部能力达成目标

如何检验理解

  • 交付含完整认证+REST设计+端到端测试+Docker编排+CI的项目并通过验收

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。