第 09 卷 · Go 后端应用、API 与应用安全
本卷的定位与入口
先修:09.01–09.04 从 Go 包、接口、错误、基本并发与 HTTP 进入;数据库部分再要求 SQL 和事务。按学习路线 S2 先做只读服务与输入边界,S3 加入持久数据、身份与安全,S5 深化异步和协议演进。
本卷按起步、原理、工程和进阶分层;首次进入时按阶段学习路线选取当前需要的章节。
已完成的独立章稿
09.01 需求与应用边界已完成。它承接 10.01 的独立预期、04.03 的 HTTP/WS 确认点与 05.01–05.03 的并发前置,以虚构 IM 的读历史和发送消息为双用例,定义可信主体、领域/传输边界和内存受理状态。09.02 HTTP 接口设计进一步约定 GET/POST、分页、游标、过滤、状态、错误体和三种限额。09.03 程序组织将合同分给 handler、应用服务、领域与内存适配器。09.04 请求处理链沿一次 POST 讲中间件、取消、panic、响应提交和日志证据。09.05 数据访问与迁移把业务合同接到数据访问、事务与兼容迁移,并对照固定 OpenIM 源码的入队与 MongoDB 消费边界。09.06 浏览器与客户端边界从表单、Cookie/Session 进入同源、CORS、CSRF、WebSocket 来源和私有历史缓存。09.07 认证与授权再把登录身份与会话/消息对象权限、退群及多设备撤销分开。09.08 输入与输出防护沿正文、附件和链接的不同使用位置讲参数、编码、路径、网络与日志边界。09.09 异步与长任务以有权历史导出 exp-9 区分 202 提交、状态查询、幂等重试、取消和私有结果。09.10 协议兼容与 RPC用 Protobuf 字段、gRPC 超时与六格新旧端矩阵评审版本/权限语义。09.11 应用测试与交付把当前 6 字节合同、待审 R9、授权负例和 CI 证据分层整理。09.12 完整服务项目在 04.04–04.07 网络前置后将本卷 S3 能力合为学习者的增量实践说明。十二章各 8 节、22 道练习均已完成。
IM 主线中的位置
登录身份、可信发送者、单聊与群成员权限、消息接口、历史分页、附件边界、会话状态与兼容。
主参照与源码入口见 OpenIM 阅读地图。各章区分公开项目事实与虚构教学规则,在具备先修后对照固定源码。
参考材料怎样进入课程
采用经典资料的知识覆盖与递进思路,结合 Go 和虚构 IM 重新组织。下表对应本卷已完成的十二章;按先修选择章节并完成独立变式。
起步层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 09.01 需求与应用边界 | 用例、输入、输出、身份、状态、错误;领域规则与传输表示。 | 定义谁给谁发什么、成功到哪一步、哪些请求拒绝,区分领域规则与传输表示。 |
| 09.02 HTTP 接口设计 | 资源、方法、状态、错误体、分页、过滤、内容类型与限额。 | 设计会话、消息与历史接口,约定方法、状态、错误体、分页、内容类型和限额。 |
| 09.03 程序组织 | handler、业务规则、存储、依赖注入、配置与日志。 | 分开连接或handler、消息规则和存储,实现可解释的依赖、配置与日志组织。 |
原理层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 09.04 请求处理链 | 中间件、上下文、超时、panic 边界、追踪与响应提交。 | 跟踪请求进入、校验、取消和响应的顺序,解释中间件与错误传播边界。 |
| 09.05 数据访问与迁移 | 连接池、参数化 SQL、事务、约束、版本迁移与测试数据。 | 处理消息数据访问中的参数、资源、冲突、迁移与结果未知,保留领域职责。 |
| 09.06 浏览器与客户端边界 | HTML 模板、表单、Cookie、Session、CORS、CSRF 与缓存。 | 区分Cookie/Session、跨源读取、请求伪造与会话授权,设计浏览器客户端边界。 |
工程层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 09.07 认证与授权 | 凭据、口令哈希、会话、token、角色、资源所有权与撤销。 | 验证可信发送者、群成员资格、设备会话和撤销;覆盖伪造身份与越权历史。 |
| 09.08 输入与输出防护 | SQL 注入、XSS、路径与文件、SSRF、大小限制和敏感日志。 | 按文本、附件、URL和日志的使用位置设计校验、编码、大小限制和敏感信息处理。 |
| 09.09 异步与长任务 | 提交/查询/取消 API、幂等身份、后台任务、事件与用户反馈。 | 设计异步发送或导出任务的提交、查询、取消与用户反馈,明确请求重试语义。 |
进阶层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 09.10 协议兼容与 RPC | 模式演进、Protobuf、版本协商、向后兼容与弃用流程。 | 为消息字段与客户端升级建立兼容矩阵,说明版本、默认值和弃用过程。 |
| 09.11 应用测试与交付 | httptest、契约、集成、安全负例、文档与配置验证。 | 交付接口契约及正常、拒绝、依赖失败和安全负例的可读验证说明。 |
| 09.12 完整服务项目 | 从 S2 内存单聊走向 S3 登录、会话权限、持久历史、在线 WebSocket、TLS 与分层验证的静态增量路线。 | 为虚构教学 IM 交付逐阶段接口/数据/失败/确认点和个人实践验收说明,不把纸上方案当已运行服务。 |
本卷综合任务
交付虚构 IM 的接口与学习实现设计,覆盖身份、会话权限、历史查询、持久消息及后续异步恢复和协议兼容。
任务由学习者在具备环境时执行。理论推导、参考示例、个人实现和真实运行记录分别保存,故障与反例属于必需部分。
达到的能力
能独立交付可维护的后端功能,并解释正常路径之外的权限、输入和失败行为。
用解释、最小实现、失败变式、业务取舍四类证据评审。只有目录、术语定义或参考代码通过,不能直接记为掌握本卷。
本卷章节展开规则
每章从一个明确问题开始,先补齐本章所需定义,再推导机制;至少含一条完整执行过程、一个反例、分层练习、反馈与业务迁移。复杂章节拆成多课,不把整卷知识压成一次速读。
当前编写状态和章节深度要求见课程编写与能力验收。