1、hibiken/asynq
保证至少执行一次任务
任务调度
重试失败的任务
在工作进程崩溃时自动恢复任务
加权优先级队列
严格优先级队列
由于Redis中的写入速度很快,因此添加任务的延迟很低
使用唯一选项对任务进行去重
允许为每个任务设置超时和截止日期
允许将任务组合成批处理多个连续操作
灵活的处理程序接口,支持中间件
能够暂停队列以停止从队列中处理任务
定期任务
支持Redis Cluster进行自动分片和高可用性
支持Redis Sentinels以实现高可用性
与Prometheus集成以收集和可视化队列指标
Web界面来检查和远程控制队列和任务
CLI用于检查和远程控制队列和任务
1、imroc/req
简单而强大:简单易用,提供丰富的客户端级和请求级设置,所有设置均为直观的链式方法。
易于调试:强大便捷的调试工具,包括调试日志、性能跟踪,甚至可以转储完整的请求和响应内容(见调试)。
易于API测试:可以使用最少的代码进行API测试,无需显式创建任何请求或客户端,甚至无需处理错误(请参见快速HTTP测试)。
默认智能化:自动检测和解码到UTF-8,以避免乱码字符(见自动解码),根据Content-Type自动组织请求主体和反序列化响应主体。
支持多个HTTP版本:支持HTTP/1.1、HTTP/2和HTTP/3,并可以自动检测服务器端并选择最佳HTTP版本进行请求,如果需要,也可以强制协议(见强制HTTP版本)。
支持重试:支持自动请求重试,并可完全自定义(请参见重试)。
轻松下载和上传:您可以通过简单的请求设置下载和上传文件,甚至可以设置回调以显示实时进度(请参见下载和上传)。
可导出:req.Transport 可导出。与http.Transport相比,它还支持HTTP3、内容转储、中间件等。它可以直接替换现有项目中的http.Client传输,并通过最小的代码更改获得更强大的功能。
可扩展:支持请求、响应、客户端和传输的中间件(请参见请求和响应中间件)以及客户端和传输中间件。
2、go-resty/resty
GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS等简单且可链式调用的设置和请求方法。
请求体可以是字符串、[]byte、结构体、map、切片和io.Reader。
自动检测Content-Type。
对于io.Reader,无需缓冲处理。
通过Request.RawRequest,在中间件和请求执行期间可以访问原生的*http.Request实例。
可以通过Request.RawRequest.GetBody()多次读取请求体。
响应对象提供更多可能性。
作为[]byte数组访问-响应.Body()或作为字符串访问-响应.String()。
了解响应时间(response.Time())以及响应时刻(response.ReceivedAt())。
JSON和XML内容类型的自动编组和解组。
如果您提供没有标题Content-Type的struct/map,则默认为JSON。
有关自动解组,请参考-
成功情况下Request.SetResult()和Response.Result()。
错误情况下Request.SetError()和Response.Error()。
支持RFC7807-application/problem+json和application/problem+xml。
Resty提供覆盖JSON Marshal/Unmarshal和XML Marshal/Unmarshal的选项。
通过multipart/form-data轻松上传一个或多个文件。
自动检测文件内容类型。
请求URL路径参数(也称为URI参数)。
带有重试条件函数引用的Backoff重试机制。
Resty客户端HTTP和REST请求和响应中间件。
支持Request.SetContext。
BasicAuth和Bearer令牌的授权选项。
为所有请求或特定请求设置请求ContentLength值。
自定义根证书和客户端证书。
直接将HTTP响应下载/保存到文件中,类似于curl -o标志。请参阅SetOutputDirectory和SetOutput。
您的请求和CookieJar支持Cookie。
基于SRV记录的请求,而不是主机URL。
客户端设置,如Timeout、RedirectPolicy、Proxy、TLSClientConfig、Transport等。
可选地允许使用负载进行GET请求,请参见SetAllowGetMethodPayload。
支持向resty注册外部JSON库,详见如何使用。
如果需要,可以公开响应读取器而不读取响应(无自动解组),详见如何使用。
当响应Content-Type头缺失时,指定预期Content-Type的选项。参见#92。
Resty设计
如果需要,可以在客户端级别设置和覆盖请求级别。
请求和响应中间件
如果需要,可以创建多个客户端resty.New()。
支持http.RoundTripper实现,请参见SetTransport。
goroutine并发安全。
Resty客户端跟踪,请参见Client.EnableTrace和Request.EnableTrace。
从v2.4.0开始,跟踪信息包含一个RequestAttempt值,Request对象包含一个Attempt属性。
调试模式-干净且信息丰富的日志演示。
Gzip- Go会自动处理,resty也有回退处理。
与HTTP/2和HTTP/1.1配合良好。
Bazel支持
轻松模拟Resty进行测试,例如。
经过充分测试的客户端库。
1、GoAdminGroup/adm
内置完善的rbac权限系统
支持多个web框架接入
本地化支持
整个系统可以编译成一个二进制文件
提供多个插件(开发中)
多个好看的ui主题(更多主题开发中)
1、golang-jwt/jwt
一个完整的JSON Web Token (JWT)实现。该库支持解析和验证,以及生成和签名JWT。
2、golang/oauth2
goauth2的后继者。通用OAuth 2.0包,提供JWT、Google APIs、Compute Engine和App Engine支持。
1、mozillazg/go-pinyin
汉语拼音转换工具 Go 版。
1、spf13/cast
不需要panic!在Go语言中进行类型转换易如反掌且安全。
2、chenhg5/collection
“Collection”为处理数据数组提供了一个流畅、方便的封装。你可以使用“Collect()”方法将一个map或者数组轻松地转换成一个Collection。然后,你可以使用Collection提供的强大而优雅的API来处理数据。
一般来说,Collection是不可变的,这意味着每个Collection方法都会返回一个全新的Collection实例。
1、thedevsaddam/govalidator
使用简单规则验证Go语言的请求数据。受Laravel请求验证启发。
2、asaskevich/govalidator
一个用于字符串、结构体和集合的验证器和过滤器包,基于validator.js。
3、go-ozzo/ozzo-validation
ozzo-validation是一个Go语言包,提供可配置和可扩展的数据验证功能。它具有以下特点:
使用普通编程结构,而不是易错的结构标记来指定数据应如何验证。
可以验证不同类型的数据,例如结构体、字符串、字节数组、切片、映射和数组。
只要实现了Validatable接口,就可以验证自定义数据类型。
可以验证实现sql.Valuer接口的数据类型(例如sql.NullString)。
可自定义和格式化良好的验证错误。
支持错误代码和消息翻译。
提供丰富的验证规则以便立即使用。
非常容易创建和使用自定义验证规则。
关于如何在应用程序中使用此库的示例,请参考go-rest-api,它是构建Go语言RESTful API的入门套件。
1 、silenceper/wechat
使用Golang开发的微信SDK,简单、易用。
1、go-pay/gopay
微信、支付宝、PayPal、QQ 的 Golang 版本SDK
1、qax-os/excelize
Excelize是一个纯Go语言编写的库,提供了一组函数,允许您读取和写入XLAM / XLSM / XLSX / XLTM / XLTX文件。它支持读取和写入Microsoft Excel™ 2007及以上版本生成的电子表格文档。该库通过高度兼容性支持复杂的组件,并提供流式API,以从具有大量数据的工作表中生成或读取数据。此库需要 Go 版本1.16或更高版本。您可以使用go的内置文档工具查看完整文档,或在线查看 go.dev 和文档参考。
1、unidoc/unioffice
文档 (docx) [Word]
读/写/编辑
格式化
图片
表格
Word 转 PDF (docx to pdf)
电子表格 (xlsx) [Excel]
读/写/编辑
单元格格式化,包括条件格式
单元格验证(下拉组合框,规则等)
按 Excel 格式检索单元格值(例如,以 Excel 中显示的形式检索日期或数字)
公式求值(目前支持100多个函数,根据需要将添加更多)
嵌入式图像
所有图表类型
幻灯片 (pptx) [PowerPoint]
从模板创建
文本框/形状
1 、github.com/disintegration/imaging
Package imaging 提供了基本的图像处理功能(如调整大小、旋转、裁剪、亮度/对比度调整等)。
该包提供的所有图像处理函数都接受实现了 image.Image 接口的任何图像类型作为输入,并返回一个新的 *image.NRGBA 类型的图像(32位 RGBA 颜色,未预乘 alpha)。
3、github.com/fogleman/gg
gg是一个使用纯Go语言渲染2D图形的库。
1、signintech/gopdf
gopdf是一个用Go语言编写的生成PDF文档的简单库。
需要Go 1.13的最低版本。
特性:
Unicode子字体嵌入(中文、日语、韩语等)。
绘制线条、椭圆、矩形、曲线。
绘制图像(jpg、png)。
设置图像遮罩。
密码保护。
字体字距调整。
2、jung-kurt/gofpdf
gofpdf是一个实现了基于高级支持文本、绘图和图像的PDF文档生成器。
特性:
UTF-8支持
测量单位、页面格式和边距的选择
页面页眉和页脚管理
自动分页、换行和文本对齐
包含JPEG、PNG、GIF、TIFF和仅包含路径的SVG图像
颜色、渐变和alpha通道透明度
概要书签
内部和外部链接
TrueType、Type1和编码支持
页面压缩
直线、贝塞尔曲线、圆弧和椭圆
旋转、缩放、倾斜、平移和镜像
剪切
文档保护
图层
模板
条形码
绘制图表
导入PDF作为模板
gofpdf除Go标准库外没有任何依赖项。在Linux、Mac和Windows平台上,所有测试都通过了。
gofpdf支持UTF-8 TrueType字体和“从右到左”的语言。请注意,许多通用字体中可能不包括中文、日文和韩文字符。对于这些语言,可以使用专门的字体(例如,NotoSansSC适用于简体中文)。
此外,提供了自动将UTF-8符文转换为少于256个字形的代码页编码以支持其他语言的功能。
3、SebastiaanKlippert/go-wkhtmltopdf
我们需要一种从 Go 中生成 PDF 文档的方法。这些文档范围广泛,从高度可定制布局的发票到带有表格、图形和图像的报告。在我们看来,使用 HTML/CSS 模板作为 PDF 的源是最好的方法。使用 CSS 打印媒体类型以及毫米而不是像素单位,我们可以使用 wkhtmltopdf 生成非常准确的 PDF 文档。
go-wkhtmltopdf 是 wkhtmltopdf 命令行工具的纯 Golang 包装器。
1、mojocn/base64Captcha
一个用于生成和验证图像验证码的包,支持数字、字母、算术表达式等多种类型。