文章目录
- 引言:REST API分层
- 一、本篇学习目标与准备
- 二、核心概念与实现思路
- 1. 一次请求会经过哪些层
- 2. Handler 层做什么
- 解析 JSON
- `DisallowUnknownFields`
- 限制请求体大小
- 3. Service 层做什么
- 4. Repository 接口是什么
- 5. 依赖注入是什么
- 6. 为什么用 HTTP 201
- 7. `errors.Is` 为什么还能识别包装后的错误
- 8. `context` 为什么要一直传下去
- 9. 为什么输入类型不直接使用 `User`
- 10. 本篇代码中一个容易忽略的细节
- 三、课程实战:运行、源码与测试
- 1. 怎么运行
- 核心源码拆解:`CreateUser`
- 源码中的测试:`TestCreateUserRejectsDuplicateEmail`
- 四、实战练习
- 扩展练习 1:增加尾随 JSON 测试
- 扩展练习 2:替换存储实现
- 五、常见问题与排错
- 问题 1:把校验都放在 Handler,为什么其他入口会绕过规则?
- 问题 2:未知 JSON 字段被拒绝,是否就完成全部输入校验?
- 六、与前文的联系和工程应用
- 七、本篇小结
- 下期预告
✍创作者:全栈弄潮儿
🏡 个人主页:全栈弄潮儿的个人主页
🏙️ 个人社区,欢迎你的加入:全栈开发社区
📙 专栏:Go零基础实战
引言:REST API分层
创建用户接口很容易写成一个大函数:读 JSON、查邮箱、写数据、处理错误都混在一起。本篇在单文件中先建立清晰的职责边界,让 Handler 处理 HTTP,让 Service 执行业务规则,让 Repository 负责数据读写。
一、本篇学习目标与准备
- 按职责组织创建用户和查询用户流程。
- 分离请求输入与数据实体。
- 用接口注入存储并保持邮箱唯一性。
课程目录: