ginbinder 一次绑定所有 request 参数
ginbinder
一次绑定 Request 中所有需要的数据

Usage
- 废弃/不可用: 弃用原生 tag
formtag。 - 保持: 使用 tag
uri绑定路径中的参数。 作用于某个字段- 就是
example.com/:some/:path中 冒号后面的
- 就是
- 保持: 使用 tag
header绑定 header。 作用于某个字段 - 新增: 新增 tag
querytag 绑定通过 Query 传递的参数。 作用于某个字段- 就是
example.com/some/path?a=1&b=2中 问号后面的那一串
- 就是
- 新增: 新增 tag
cookie绑定 cookie 中 简单 的键值对。 作用于某个字段 - 新增: 新增 tag
body绑定request.Body中的数据。 必须作用于一个struct上。- Body 数据的解析器通过
content-type判断, 默认为Json - Body 中的字段不能包含
uri, query, cookie, header这些 tag, 否则会 panic。 body只能有一个
- Body 数据的解析器通过
按照 Request 结构管理参数
| |
如果层抓包捕获过 http 请求并观察过其结构。 那么应该很好理解这个格式。
这里放一张 Params 与 Request 的关系图以帮助理解。

图中有一个错误,
12/13 行的tag应该是query。
按照 Request 结构设计参数很 常用 也很清晰。

按功能组管理参数
由于 gin 原生中的 mapTag 规则有 递归 的功能, 对 Params 的设计还可以进行一些改造。
可以按组配置 非 body 参数。 这里分组的 struct 名字不重要,也不需要为 struct 指定 tag。
但是 一定要 为字段指定了相应的 tag, 就会进行递归查找与绑定。
1. 按照数据位置进行分组
这里按照 参数 在 Request 中的位置进行分组。
| |

2. 按照功能/业务需求进行分组
这里按照参数的功能进行分组, 加入有一个功能是对用户进行权限验证。 需要结合 name 和 auth
| |

exmaple
Demo 参考 exmaple
使用 VsCode 的 Rest Client 可以快速测试
| |
- 原文链接:https://typonotes.com/posts/2021/08/19/ginbinder/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。


