1.1. 序言
说明
本课程以构建一个论坛 API 为主题,带大家从零开始构建一个高性能、功能齐全的 API 程序框架。
课程亮点
课程主要涉及以下三大部分的知识点:
- API 开发
- 命令行开发
- 构建高率的程序结构
本课程虽命名为 API 实战,但不止于 API。
产品
产品的选型为『论坛』,但是本课程关于论坛功能的讲解占了很小的篇幅。主要是想把更多篇幅放在构建 API 和一个高效率的程序结构上。
本课程的设计初衷是,让同学们在学完本课程后,可以将代码应用到现实的工作中。
知识点
推荐阅读 —— 项目统计 ,这里面有更详细的信息。
涉及以下知识点:
- 配置信息(使用 Viper,支持 .env 和 config 目录 )
- API 版本
- API 错误码
- API 限流
- 支持秒、分钟、小时、天级的请求限制
- 支持返回 API 请求量标头(限制数,剩余量、重置时间)
- 注册登录
- 注册
- 判断手机是否注册
- 判断 Email 是否注册
- 支持手机 + 短信验证码进行注册
- 支持使用邮箱注册账号
- 登录
- 支持手机 + 短信进行登录
- 支持密码登录(手机号、Email、用户名任选)
- 支持更加安全的 Token Refresh 机制
- 找回密码
- 支持使用手机+短信验证码找回
- 支持使用邮箱+邮箱验证码找回
- 注册
- JWT 授权
- 整个应用使用命令行模式(默认运行 web 服务)
- 内置命令行( cobra,对比 cli 和 cobra)
- key 命令生成 app key
- make 命令
- make seeder —— 生成数据填充
- make policy —— 生成授权文件
- make apicontroller —— 生成 Restful API 控制器
- make model —— 生成模型文件
- make request —— 生成请求验证文件
- make factory —— 生成模型工厂文件
- make cmd —— 生成自定义命令文件
- make migration —— 生成数据库迁移文件
- seed 数据填充
- seed 所有数据
- seed 单条数据
- 支持使用 faker 填充假数据
- 支持模型工厂( factory )
- migrate 数据库迁移
- up —— 执行迁移
- rollback (down) —— 回滚上一步执行的迁移
- fresh —— 删除所有表,然后执行所有迁移
- reset —— 回滚所有迁移
- refresh —— 回滚所有迁移,然后再执行所有迁移
- cache 缓存处理
- cache clear —— 清除缓存
- cache forget —— 忘记某个 KEY 对应的缓存
- 分页
- 支持返回上下页链接,方便客户端调用
- Cache 缓存包
- 支持 redis 缓存
- 使用 interface ,支持使用多驱动
- Redis 操作
- 安全验证码
- Email (发送邮箱,使用 Mailhog 进行测试)
- 手机验证码(发送手机短信)
- 内置 Redis 驱动,以接口方式编写,支持多驱动
- 图片验证码,防机器人滥用
- 支持通过配置信息自定义复杂度
- 内置 Redis 驱动,以接口方式编写,支持多驱动
- 日志记录
- 集成 zap 高性能日志库
- 支持命令行记录(方便开发时快速定位问题)
- 命令行日志高亮
- 支持文件记录(多文件和按日期分隔)
- 记录 gorm 的 query log
- 记录 HTTP 请求 log
- Panic Recovery 中间件
- 合理的日志等级(debug, info, error, panic, fatal)
- Policy 授权策略结构
- Request 请求验证方案
- 支持 JSON 请求、表单请求、URL Query
- API 图片上传
- 图片裁切
- 数据库支持 mysql 和 sqlite