← 全部标签

Go。

这个主题下的 18 篇记录。

  1. 记录一次Go打包Docker镜像的问题

    在Linux环境下编译好Go源文件以后我尝试将最后的可执行文件复制到Docker镜像alpine中。 这是一个最简单的Go Web代码 以及对应的Dockerfile 在最后运行容器时始终出现了file not found的警告,容器一直启动失败,我尝试通过exec进入到容器内部查看文件,发现文件确

  2. swaggo的使用

    swag是一个为Go语言生成文档的框架,主要有两个部分组成 - swag命令行工具,用于把Go注释生成为对应的Swagger2.0文档 - 为多种流行框架准备的插件,可以帮助我们快速嵌入Swag 快速开始(以gin为例) 下载和使用swag命令行工具 如果不能使用记得检查一下你的${GOPATH}/

  3. 『Go』在Go中使用JWT

    什么是JWT JWT即JSON Web Token,工作机制是在用户通过鉴权之后,服务端发送一个JSON作为凭证给客户端,让客户端又权限可以访问一些资源 JWT 的三个部分依次如下。 我们需要注意的是Payload中的数据不会被加密,所以不要存放重要 签名保存在服务端,是绝对不可泄露的 最后,服务器

  4. (十五)密码加密和jwt认证

    开始前的准备 开始编码 密码加密 pkg/hash/hash.go 这里要注意的是BcryptCheck()函数的参数位置不能错误,否则函数将无法正常运行 添加钩子函数 app/models/user/userhooks.go 这里我们使用了gorm的钩子函数,注意参数和函数名都不要出错 验证密码

  5. (十四)邮箱发送验证码

    开始前的准备 - 发送邮箱验证码时请确保开启MailHog 开始编码 整体逻辑和手机发送短信差不多 接受前端数据 app/requests/signuprequest.go 控制器 注册路由 测试

  6. (十三)手机号发送短信验证码

    开始前的准备 编码开始 接受前端数据 app/requests/signuprequest.go 从前端接受到数据,为了满足我们的自定义需求,我们需要自己来拓展验证包 自定义规则 app/requests/validators/customrules.go 自定义验证器 app/requests/v

  7. (十二)用邮件来发送验证码

    开始前的准备 我们用mailhog来作为邮箱服务器 - SMTP端口:1025 - 网页端口:8025 我们再powershell使用MailHog命令开启服务 编码 封装mail包 我们依然先去封装mail包 pkg/mail/driverinterface.go pkg/mail/drivers

  8. (十一)利用阿里云平台发送短信

    开始前的准备 开始编码 封装sms pkg/sms/driverinterface.go pkg/sms/driveraliyun.go pkg/sms/sms.go 我们先把阿里云的sms包封装成一个Send函数 验证手机验证码 在这里值得一提的是,我们要注意在整个用手机发送短信的过程中,有两个不

  9. (十)统一返回格式

    新建response包封装返回内容 然后,我们再把前面的返回内容改成新的函数,这一部分就作为课后内容由你们自己完成(不修改也不会影响正常使用)

  10. (九)使用redis和captcha

    开始前的准备 开始编码 redis包 pkg/redis/redis.go 我们对redis包中的redis函数进行了封装并且添加了日志 redis的配置 config/redis.go captcha包 base64Captcha内置了一个内存储存,但是这并不方便,我们用redis实现它的储存接口

  11. (八)在gin和gorm中使用zap

    开始前的准备 gin整合zap 还记得我们在gin中自定义中间件的函数吗,我们将自定义中间件并整合zap来代替原来的中间件 bootstrap/route.go 接下来的内容涉及到的内容很多,只需要理解大概即可,所以这一部分的讲解只会介绍大概的思路。 logger中间件 app/http/middl

  12. (七)集成zap

    开始前的准备 这一部分内容我们需要上面两个包的内容,zap是一个功能强大而且完善的日志包,lumberjack则是一个日志分割的包。 这一部分的内容由于较到了较为全面的个性化配置,所以新内容会比较多,难度上会稍大,但是慢慢来,我们尽可能地梳理这里面的内容:smirk: 开始编码 配置文件 配置的方法

  13. (六)封装验证器

    开始前的准备 抽离公共部分代码 抽离验证函数中的公共部分 我们发现再验证手机号码和邮箱的过程中很多代码是类似的,所以我们可以把它们抽离出来重复使用 app/requests/signuprequest.go 我们发现这个部分是完全一致的 app/requests/requests.go 这里把这一段

  14. (五)完成验证手机和邮箱是否存在接口

    开始前的准备 简单好用的go验证包,可以自定义验证规则和错误信息 创建controller app/http/controllers/api/v1/baseapicontroller.go 和前面一样,先创建一个Controller基类 app/http/controllers/api/v1/aut

  15. (四)集成gorm

    开始前的准备 我们将使用gorm来使用数据库,项目中我们使用mysql数据库 集成gorm 配置信息 config/database.go .env 先用前面的配置配置好数据库相关的参数 连接数据库工具类 pkg/database/database.go 启动连接 和前面启动gin的思路类似,我们在

  16. (三)集成viper

    开始前的准备 - viper viper是一个相当常用的配置管理包,功能相当强大。但是如果之前没有接触过这个包,第一次学习可能感到疑惑,你可以根据自己的情况去先学习viper的用法或者保持一定的疑惑。 - cast ​ 一个非常方便的类型转换包 编码 编写viper工具包 pkg/config/co

  17. (二)集成gin

    开始前的准备 - gin go get github.com/gin-gonic/gin 编码 构建main函数 main.go 我们会在bootstrap包中的SetupRoute()中初始化router,下面我们去完成这个函数 初始化router bootstrap/route.go regis

  18. (一)项目基础信息和说明

    所需要的Go语言基础 这并不是一个完全零基础的Go语言Web项目教程,你需要对包括但不限于gin,gorm等常用框架有一定的了解。此外,如果你之前有过其它语言的Web开发经验,那么我相信你也可以很快学会这些内容。如果没有这些基础,你可以跟着本教程做下去,我们会在每一部分的练习中写上所需要的基础,你可