新课程发布《g02 go api 实战》 | go社区公告 | go 技术论坛-大发黄金版app下载

说明

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

项目名称 gohub,请见 。

课程链接

课程亮点

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

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

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

产品

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

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

restful api 最佳实践

一套优秀的 api 设计,需要具备如下特性:

  1. 使用 https
  2. 使用域名
  3. 版本区分
  4. 使用 url 来定位资源
  5. 使用 http 动词来描述操作
  6. 支持资源过滤
  7. 使用 http 状态码
  8. 数据响应的一致性
  9. 支持限流
  10. api 文档
  11. 自带分页链接
  12. 强制 user-agent

详细讲解请见 。

gohub 基于这些规范和要求开发。

所有路由

请求方法 api 地址 说明
post /api/v1/auth/login/using-phone 短信 手机号登录
post /api/v1/auth/login/using-password 手机号、用户名、邮箱 密码
post /api/v1/auth/login/refresh-token 刷新 token
post /api/v1/auth/password-reset/using-email 邮件密码重置
post /api/v1/auth/password-reset/using-phone 短信验证码密码重置
post /api/v1/auth/signup/using-phone 使用手机号注册
post /api/v1/auth/signup/using-email 使用邮箱注册
post /api/v1/auth/signup/phone/exist 手机号是否已注册
post /api/v1/auth/signup/email/exist email 是否已支持
post /api/v1/auth/verify-codes/phone 发送短信验证码
post /api/v1/auth/verify-codes/email 发送邮件验证码
post /api/v1/auth/verify-codes/captcha 获取图片验证码
get /api/v1/user 获取当前用户
get /api/v1/users 用户列表
put /api/v1/users 修改个人资料
put /api/v1/users/email 修改邮箱
put /api/v1/users/phone 修改手机号
put /api/v1/users/password 修改密码
put /api/v1/users/avatar 上传头像
get /api/v1/categories 分类列表
post /api/v1/categories 创建分类
put /api/v1/categories/:id 更新分类
delete /api/v1/categories/:id 删除分类
get /api/v1/topics 话题列表
post /api/v1/topics 创建话题
put /api/v1/topics/:id 更新话题
delete /api/v1/topics/:id 删除话题
get /api/v1/topics/:id 获取话题
get /api/v1/links 大发黄金版app下载的友情链接列表

第三方依赖

使用到的开源库:

  • —— 路由、路由组、中间件
  • —— 高性能日志方案
  • —— orm 数据操作
  • —— 命令行结构
  • —— 配置信息
  • —— 类型转换
  • —— redis 操作
  • —— jwt 操作
  • —— 图片验证码
  • —— 请求验证器
  • —— 限流器
  • —— smtp 邮件发送
  • —— 发送阿里云短信
  • —— 终端高亮输出
  • —— 字符串大小写操作
  • —— 英文字符单数复数处理
  • —— 假数据填充
  • —— 图片裁切

自定义的包

现在来看下我们自建的库:

  • app —— 应用对象
  • auth —— 用户授权
  • cache —— 缓存
  • captcha —— 图片验证码
  • config —— 配置信息
  • console —— 终端
  • database —— 数据库操作
  • file —— 文件处理
  • hash —— 哈希
  • helpers —— 辅助方法
  • jwt —— jwt 认证
  • limiter —— api 限流
  • logger —— 日志记录
  • mail —— 邮件发送
  • migrate —— 数据库迁移
  • paginator —— 分页器
  • redis —— redis 数据库操作
  • response —— 响应处理
  • seed —— 数据填充
  • sms —— 发送短信
  • str —— 字符串处理
  • verifycode —— 数字验证码

代码行数

gohub 项目总共有 4600 行代码(工具 ):

$ gocloc .
-------------------------------------------------------------------------------
language                     files          blank        comment           code
-------------------------------------------------------------------------------
go                             122           1200            865           4629
toml                             1              7             21             28
-------------------------------------------------------------------------------
total                          123           1207            886           4657
-------------------------------------------------------------------------------

所有命令

$ go run main.go -h
default will run "serve" command, you can use "-h" flag to see all subcommands
usage:
   [command]
available commands:
  cache       cache management
  completion  generate the autocompletion script for the specified shell
  help        help about any command
  key         generate app key, will print the generated key
  make        generate file and code
  make        generate file and code
  migrate     run database migration
  play        likes the go playground, but running at our application context
  seed        insert fake data to the database
  serve       start web server
flags:
  -e, --env string   load .env file, example: --env=testing will use .env.testing file
  -h, --help         help for this command
use " [command] --help" for more information about a command.

make 命令:

$ go run main.go make -h
generate file and code
usage:
   make [command]
available commands:
  apicontroller create api controller,exmaple: make apicontroller v1/user
  cmd           create a command, should be snake_case, exmaple: make cmd buckup_database
  factory       create model's factory file, exmaple: make factory user
  migration     create a migration file, example: make migration add_users_table
  model         crate model file, example: make model user
  policy        create policy file, example: make policy user
  request       create request file, example make request user
  seeder        create seeder file, example:  make seeder user
flags:
  -h, --help   help for make
global flags:
  -e, --env string   load .env file, example: --env=testing will use .env.testing file
use " make [command] --help" for more information about a command.

migrate 命令:

$ go run main.go migrate -h
run database migration
usage:
   migrate [command]
available commands:
  down        reverse the up command
  fresh       drop all tables and re-run all migrations
  refresh     reset and re-run all migrations
  reset       rollback all database migrations
  up          run unmigrated migrations
flags:
  -h, --help   help for migrate
global flags:
  -e, --env string   load .env file, example: --env=testing will use .env.testing file
use " migrate [command] --help" for more information about a command.

课程链接

课程链接

摈弃世俗浮躁,追求技术精湛
本帖已被设为精华帖!
本帖由系统于 3年前 自动加精
summer
讨论数量: 100

同求微服务! : 1:

3年前

: 1:

3年前

: 1:

3年前

来了

3年前

summer大哥 真好啊。等了好久的课程 终于要出来了 :grin:

3年前
summer (楼主) 3年前

昨天才建了个新仓库写blog 今天就来货了 :joy:

3年前

: 1:

3年前

千呼万唤始出来! : 1:

3年前

来了来了

3年前

: 1:

3年前

:thumbsup:

3年前

: 1:

3年前

: 1:

3年前

已购买,支持一下 : 1:

3年前

太需要了,非常感谢

3年前
summer (楼主) 3年前

还有下一门go课程的计划吗?

3年前
summer (楼主) 3年前

可以来一门 微服务,rpc相关的课程

3年前
summer (楼主) 3年前
6个月前
6个月前

来了

3年前
jennie

那就卷起来 :smirk:

3年前

: 1: : 1:

3年前
zhaocrazy

学库手机版也那么好看 : 1:

3年前

: 1:

3年前

summer 失踪了已久还以为忘了更新视频;这波带好货杀回来了,可以,给力👍

3年前
summer (楼主) 3年前

买买买

3年前

我之前买过的什么会员在哪里看

3年前

他来了 他来了,他带着新教程来了 :smirk:

3年前

file

3年前

多谢summer老师,终于来了。 : 1:

3年前

同求微服务! : 1:

3年前

: 1:出的都支持了,很棒。

2年前

感觉这个课程很硬核!我想请问一下老师,这个课程最后交付是否有前端代码?老师什么时候可以出一个微服务,分布式之类的课程吗?!

2年前

請問這之後會不會推出單元測試?🥺

2年前

: 1:

2年前

下个课程什么时候到来?

2年前

催更,下个课程啥时候出呀?

2年前

有 golang 项目部署的相关教程么? hhh

已经找到了

2年前

哇,真是令人兴奋的教程,能不能再出一个教程,关于游戏那个方向的?

2年前

催更微服务 1 :blush:

2年前

来催更了。

2年前

催更下一个课程,可以预付费

2年前
6个月前
6个月前

催更微服务!!!!!!

2年前
6个月前
6个月前

催更微服务 1

2年前
6个月前
6个月前

催更微服务 99

2年前
6个月前
6个月前
6个月前

催更 下一本什么时候出呀

2年前

催更微服务 1

2年前

催更

2年前

哥,下一门课大概什么时候上架呀?

2年前

搞一个go框架的把

2年前

能不能加一下定时任务和常驻任务相关

2年前
2年前

催更g03 ,

2年前

催更

2年前

老大转go了吗

2年前

刚购买,准备学习了

2年前

我这边始终跑不起来一直卡在那里

file 而且编译也没反应

1年前
1年前
(作者) 1年前

催更下一阶段 go3 谢谢 : 1:

1年前

催更微服务 1

1年前

催更g03 谢谢~

1年前

最大的败笔没有单元测试,这个又不是php现在稍微大的公司就让单元测试,是不是讲一下

1年前

学习, 学习

1年前

催更 g03 谢谢~

1年前

推荐一个redis工具:

1年前

催更下一阶段 go3 谢谢

1年前

催更下一阶段 go3 谢谢 :joy:

1年前

催更下一阶段 go3 谢谢

1年前

催更下一阶段 go3 谢谢

1年前

催更下一阶段 go3 谢谢

1年前

催更下一阶段 go3 谢谢

1年前
刘天承

催更下一阶段 go3 谢谢

1年前

go3什么时候开始

11个月前

催更下一阶段 go3 谢谢

11个月前

催更 go3 有时间表吗

10个月前
wanghan

催更下一阶段 go3 谢谢

10个月前

一些大公司已经不用resetful方式了,全是post 很奇葩

10个月前
10个月前

有go3吗

7个月前
7个月前

我很喜欢,这个够浪。

6个月前

站长大大,站内的高亮有idea的配色方案吗?

6个月前

日常 催更下一阶段 go3 谢谢

4个月前

虽然go2 还没学完,提前催更一波 go3,哈哈~

1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图