1.1. 序言

说明

本课程以构建一个论坛 API 为主题,带大家从零开始构建一个高性能、功能齐全的 API 程序框架。

课程亮点

课程主要涉及以下三大部分的知识点:

  • API 开发
  • 命令行开发
  • 构建高率的程序结构

本课程虽命名为 API 实战,但不止于 API。

产品

产品的选型为『论坛』,但是本课程关于论坛功能的讲解占了很小的篇幅。主要是想把更多篇幅放在构建 API 和一个高效率的程序结构上。

本课程的设计初衷是,让同学们在学完本课程后,可以将代码应用到现实的工作中。

知识点

推荐阅读 —— 项目统计 ,这里面有更详细的信息。

涉及以下知识点:

  1. 配置信息(使用 Viper,支持 .env 和 config 目录 )
  2. API 版本
  3. API 错误码
  4. API 限流
    1. 支持秒、分钟、小时、天级的请求限制
    2. 支持返回 API 请求量标头(限制数,剩余量、重置时间)
  5. 注册登录
    1. 注册
      1. 判断手机是否注册
      2. 判断 Email 是否注册
      3. 支持手机 + 短信验证码进行注册
      4. 支持使用邮箱注册账号
    2. 登录
      1. 支持手机 + 短信进行登录
      2. 支持密码登录(手机号、Email、用户名任选)
      3. 支持更加安全的 Token Refresh 机制
    3. 找回密码
      1. 支持使用手机+短信验证码找回
      2. 支持使用邮箱+邮箱验证码找回
  6. JWT 授权
  7. 整个应用使用命令行模式(默认运行 web 服务)
  8. 内置命令行( cobra,对比 cli 和 cobra)
    1. key 命令生成 app key
    2. make 命令
      • make seeder —— 生成数据填充
      • make policy —— 生成授权文件
      • make apicontroller —— 生成 Restful API 控制器
      • make model —— 生成模型文件
      • make request —— 生成请求验证文件
      • make factory —— 生成模型工厂文件
      • make cmd —— 生成自定义命令文件
      • make migration —— 生成数据库迁移文件
    3. seed 数据填充
      • seed 所有数据
      • seed 单条数据
      • 支持使用 faker 填充假数据
      • 支持模型工厂( factory )
    4. migrate 数据库迁移
      1. up —— 执行迁移
      2. rollback (down) —— 回滚上一步执行的迁移
      3. fresh —— 删除所有表,然后执行所有迁移
      4. reset —— 回滚所有迁移
      5. refresh —— 回滚所有迁移,然后再执行所有迁移
    5. cache 缓存处理
      • cache clear —— 清除缓存
      • cache forget —— 忘记某个 KEY 对应的缓存
  9. 分页
    1. 支持返回上下页链接,方便客户端调用
  10. Cache 缓存包
    1. 支持 redis 缓存
    2. 使用 interface ,支持使用多驱动
  11. Redis 操作
  12. 安全验证码
    1. Email (发送邮箱,使用 Mailhog 进行测试)
    2. 手机验证码(发送手机短信)
    3. 内置 Redis 驱动,以接口方式编写,支持多驱动
  13. 图片验证码,防机器人滥用
    1. 支持通过配置信息自定义复杂度
    2. 内置 Redis 驱动,以接口方式编写,支持多驱动
  14. 日志记录
    1. 集成 zap 高性能日志库
    2. 支持命令行记录(方便开发时快速定位问题)
    3. 命令行日志高亮
    4. 支持文件记录(多文件和按日期分隔)
    5. 记录 gorm 的 query log
    6. 记录 HTTP 请求 log
    7. Panic Recovery 中间件
    8. 合理的日志等级(debug, info, error, panic, fatal)
  15. Policy 授权策略结构
  16. Request 请求验证方案
    1. 支持 JSON 请求、表单请求、URL Query
  17. API 图片上传
  18. 图片裁切
  19. 数据库支持 mysql 和 sqlite

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~