新课程发布《g02 go api 实战》 | go社区公告 | go 技术论坛-江南app体育官方入口
说明
本课程以构建一个论坛 api 为主题,带大家从零开始构建一个高性能、功能齐全的 api 程序框架。
项目名称 gohub,请见 。
课程链接
课程亮点
课程主要涉及以下三大部分的知识点:
- api 开发
- 命令行开发
- 构建高效率的程序结构
本课程虽命名为 api 实战,但不止于 api。
产品
产品的选型为『论坛』,但是本课程关于论坛功能的讲解占了很小的篇幅。主要是想把更多篇幅放在构建 api 和一个高效率的程序结构上。
本课程的设计初衷是,让同学们在学完本课程后,可以将代码应用到现实的工作中。
restful api 最佳实践
一套优秀的 api 设计,需要具备如下特性:
- 使用 https
- 使用域名
- 版本区分
- 使用 url 来定位资源
- 使用 http 动词来描述操作
- 支持资源过滤
- 使用 http 状态码
- 数据响应的一致性
- 支持限流
- api 文档
- 自带分页链接
- 强制 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年前 自动加精
高认可度评论:
同求微服务! : 1:
: 1:
: 1:
来了
summer大哥 真好啊。等了好久的课程 终于要出来了 :grin:
昨天才建了个新仓库写blog 今天就来货了 :joy:
: 1:
千呼万唤始出来! : 1:
来了来了
: 1:
:thumbsup:
: 1:
: 1:
已购买,支持一下 : 1:
太需要了,非常感谢
还有下一门go课程的计划吗?
可以来一门 微服务,rpc相关的课程
来了
支持
: 1:
那就卷起来 :smirk:
: 1: : 1:
学库手机版也那么好看 : 1:
: 1:
summer 失踪了已久还以为忘了更新视频;这波带好货杀回来了,可以,给力👍
买买买
我之前买过的什么会员在哪里看
他来了 他来了,他带着新教程来了 :smirk:
多谢summer老师,终于来了。 : 1:
同求微服务! : 1:
: 1:出的都支持了,很棒。
感觉这个课程很硬核!我想请问一下老师,这个课程最后交付是否有前端代码?老师什么时候可以出一个微服务,分布式之类的课程吗?!
請問這之後會不會推出單元測試?🥺
: 1:
下个课程什么时候到来?
催更,下个课程啥时候出呀?
有 golang 项目部署的相关教程么? hhh
已经找到了
哇,真是令人兴奋的教程,能不能再出一个教程,关于游戏那个方向的?
催更微服务 1 :blush:
来催更了。
催更下一个课程,可以预付费
催更微服务!!!!!!
催更微服务 1
催更微服务 99
催更 下一本什么时候出呀
催更微服务 1
催更
哥,下一门课大概什么时候上架呀?
搞一个go框架的把
能不能加一下定时任务和常驻任务相关
催更g03 ,
催更
老大转go了吗
刚购买,准备学习了
我这边始终跑不起来一直卡在那里
催更下一阶段 go3 谢谢 : 1:
催更微服务 1
催更g03 谢谢~
最大的败笔没有单元测试,这个又不是php现在稍微大的公司就让单元测试,是不是讲一下
学习, 学习
催更 g03 谢谢~
推荐一个redis工具:
催更下一阶段 go3 谢谢
催更下一阶段 go3 谢谢 :joy:
催更下一阶段 go3 谢谢
催更下一阶段 go3 谢谢
催更下一阶段 go3 谢谢
催更下一阶段 go3 谢谢
催更下一阶段 go3 谢谢
go3什么时候开始
催更下一阶段 go3 谢谢
催更 go3 有时间表吗
催更下一阶段 go3 谢谢
一些大公司已经不用resetful方式了,全是post 很奇葩
有go3吗
我很喜欢,这个够浪。
站长大大,站内的高亮有idea的配色方案吗?
日常 催更下一阶段 go3 谢谢
虽然go2 还没学完,提前催更一波 go3,哈哈~