1.效果展示
base64转图片网址:在线Base64转图片
2.编写图形验证码接口
1.安装 base64Captcha 库
"github.com/mojocn/base64Captcha"
2.编写代码
1.导入包:
github.com/gin-gonic/gin:Gin 框架,用于处理 HTTP 请求。 github.com/mojocn/base64Captcha:生成验证码的库。 go.uber.org/zap:日志库,用于记录日志。 go_gin/Response:自定义的响应处理库。 net/http:标准库,用于处理 HTTP 状态码。
2.全局变量:
store:一个全局变量,用于存储生成的验证码。这里使用了 base64Captcha 提供的默认内存存储。 函数 GetCaptcha: GetCaptcha 是一个处理函数,接收一个 *gin.Context 类型的参数 ctx,用于处理 HTTP 请求和响应。
3.创建验证码驱动:
使用 base64Captcha.NewDriverDigit 创建一个数字类型的验证码驱动,参数包括字体大小、图片宽度、验证码字符数、噪声强度和干扰线条数。
4.创建验证码实例:
使用 base64Captcha.NewCaptcha 创建一个验证码实例,传入前面创建的驱动和存储。
5.生成验证码:
调用 cp.Generate 方法生成验证码,返回验证码的 ID 和图片的 Base64 编码字符串。 如果生成验证码时发生错误,记录错误日志并返回一个内部服务器错误的响应。
6.返回成功响应:
如果验证码生成成功,调用 Response.Success 方法返回一个成功的响应,包含验证码的 ID 和图片的 Base64 编码字符串。
7.完整代码
package controller
import (
"github.com/gin-gonic/gin"
"github.com/mojocn/base64Captcha"
"go.uber.org/zap"
"go_gin/Response"
"net/http"
)
// base64Captcha 缓存对象
var store = base64Captcha.DefaultMemStore
// GetCaptcha 获取验证码
func GetCaptcha(ctx *gin.Context) {
//
driver := base64Captcha.NewDriverDigit(80, 240, 5, 0.7, 80)
cp := base64Captcha.NewCaptcha(driver, store)
// b64s是图片的base64编码
id, b64s, err := cp.Generate()
if err != nil {
zap.S().Errorf("生成验证码错误,:%s ", err.Error())
Response.Err(ctx, http.StatusInternalServerError, 500, "生成验证码错误", "")
return
}
Response.Success(ctx, 200, "生成验证码成功", gin.H{
"captchaId": id,
"picPath": b64s,
})
}
3.给验证码接口添加路由
package router
import (
"Founction/controller"
"github.com/gin-gonic/gin"
)
// InitBaseRouter 图形验证码的路由
func InitBaseRouter(Router *gin.RouterGroup) {
BaseRouter := Router.Group("base")
{
// 获取图片验证码
BaseRouter.GET("captcha", controller.GetCaptcha)
}
}
- func InitBaseRouter(Router *gin.RouterGroup):定义一个函数 InitBaseRouter,接收一个 *gin.RouterGroup 类型的参数 Router,用于注册路由。
- BaseRouter := Router.Group("base"):在传入的 Router 上创建一个名为 base 的路由组。 { ... }:在 BaseRouter 组内定义具体的路由规则。
- BaseRouter.GET("captcha", controller.GetCaptcha):在 base 路由组下添加一个 GET 路由 /captcha,并将其处理函数设置为 controller.GetCaptcha。
4.在main函数中编写测试
5.结果验证
在postman中输入你自己的路由地址,比如我的:http://127.0.0.1:8021/v1/base/captcha
点击发送后得到以下结果
最后将生成的base64编码搁到专门的转码网站上就可以转化为图片, 例如:在线Base64转图片
最后结果:
这就是完整的流程设计了,感谢各位老铁的观看。