一、问题
面临的问题:需要对已有业务代码修改时间格式,原本的时间格式里面带了一个T。因为时间分散在各处,又没有统一的管理入口。这面临着大量的代码修改,于是想找一个没有那么大修改量的方式。
二、思路
思考了一下,两个地方是肯定会经过的,一个是JSON转化的地方,一个是中间件。
1. 在JSON序列化处修改。
如果能添加一个类似Python的encoder之类的东西,那么就可以解决所有的日期的序列化。可惜在一番寻找后,并没有发现这样的东西。其间发现gorm支持在tag上添加序列化,但发现gin是直接使用的原生的json模块,并没有走gorm的逻辑。而原生的json没有统一的修改序列化的地方。
2. 在中间件处修改。
这个是gin支持的中间件机制。之前有使用过。
3. monkey patch到time模块上,修改其序列化方法。
直接monkey patch修改原生time类型的序列化方法。这类方法比较脏,不确定是否可能有潜在风险。
三、日志
我上手尝试了一下中间件机制。发现可行就没有再继续验证其它方法。
1. 创建一个简单的REST API
package main
import (
"regexp"
"time"
"github.com/gin-gonic/gin"
)
type StructA struct {
FieldA string `form:"field_a" binding:"required"`
Ctime time.Time `form:"ctime" binding:"required"`
}
type StructB struct {
// 嵌套结构体
StructA
FieldB stri
Gin中间件处理时间格式

最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



