为了账号安全,请及时绑定邮箱和手机立即绑定

proto-validator使用介绍

标签:
Go

最近把内部的一个工具开源了出来,主要功能就是可以通过配置proto的拓展完成dto的参数验证定义与执行。

proto-validator

proto-validator是我们在平时开发中为了解决业务痛点而创造的。 为了实现proto dto的定义和参数验证 ,原来我们只能在写业务代码时自己再去做参数验证,会造成一定量的重复劳动。而proto-validator可以实现 在定义proto时就可以声明参数验证规则,通过proto-gen-av生成自动验证代码,把参数验证自动处理掉。

与github上其它类似的库的区别? 我人为最大的区别是更节省了一步。 我看了其它库主要是生成validate规则,然后需要用户在业务代码中调一下 这个验证方法,自行返回错误。 我是一步重复劳动都不想做,所以把验证并返回报错这一步也自动化了。

protoc-gen-av

全称 protoc-gen-auto-validator 简称protoc-gen-av

最佳实践

先安装protoc-gen-av插件

go install github.com/Gitforxuyang/proto-validaotr/cmd/protoc-gen-av

简单服务(单个服务)

参考examples/simple

多个服务(对于有些大仓库,很多服务在同一个目录下)

参考examples/multi

方法介绍

所有的默认值等于不启用插件 比如如果设置gte=0,可能本意是需要入参>=0,但是插件无法读取,所以请不要在配置中使用 各类型的零值

字段类型默认值类型当字段是string类型时repeated时int32/int64/uint32/uint64时float/double时message类型时
omitemptytruebool不能为空字符串数组长度不能为0值不能为0值不能为0不能为nil
gte0double不支持长度必须>=n值必须>=值必须>=不支持
gt0double不支持长度必须>n值必须>值必须>不支持
lte0double不支持长度必须<=n值必须<=值必须<=不支持
lt0double不支持长度必须<n值必须<值必须<不支持
eq“”string字符串=n长度必须=n值必须=n值必须=n不支持
in“”string格式必须是[1,2,3]不支持格式必须是[1,2,3]格式必须是[1.1,2.2,3.3]不支持
regexp“”string正则表达式不支持不支持不支持不支持

QA

为什么需要复制plugin.proto文件到自己的服务里

因为go mod模式下,无法通过原来gopath的方式去src目录下读取第三方库的文件了。 所以只能这样

为什么还需要传创建error的方法

因为有些业务有自己的error对象,无法直接返回系统的error,所以提供创建error对象的方法,供使用方自己 去定义error的创建

我的proto文件在goland里标红怎么办

在goland中配置对proto文件的读取目录,如下图所示:

最后,github地址(https://github.com/Gitforxuyang/proto-validaotr)

欢迎来提issue.


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消