Golang出现泛型后,Gin怎么封装网络请求处理

简介: Go 1.18后出现泛型,小白怎么使用Gin框架怎么根据泛型封装客户端请求,

Go是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。它能让构造简单、可靠且高效的软件变得容易。

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 语言交互性

Go在1.18后引入了泛型设计,怎么让增加泛型的Go,在开发Web上变得更加高效。
Go在引入泛型之前,只能用interface{}进行沾包。这样做的话想要对所有的参数进行统一绑定参数以及统一处理返回值是不太友好的。
原处理思路:使用反射获取处理的函数,绑定入参,Call函数,函数内部写response。
现处理思路:定义函数、response格式,绑定函数参数,处理返回值。

type Response struct {
  Code int    `json:"code"`
  Msg  string `json:"msg"`
  Data any    `json:"data"`
}
// 这里的Response只是针对于http response body的结构,并不是http response本身。

因为使用Gin作为Web框架,想要更好的结合Gin处理,泛型函数的返回值为 gin.HandlerFunc

func ParseFunc[T any](fn ParseFuncType[T], title string) gin.HandlerFunc

绑定参数:

       param := new(T)
// 根据入参类型分配内存
    err = c.ShouldBind(&param)
    if err != nil {
        ...
    }
    err = c.ShouldBindUri(&param)
    if err != nil {
        ...
    }
       response, err := fn(c, *param)
...

这样就能统一处理request

目录
相关文章
|
1月前
|
存储 缓存 Dart
Flutter&鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
本文详细介绍了如何在 Flutter 中使用 Dio 封装网络请求,实现用户登录身份验证及免登录缓存功能。首先在 `pubspec.yaml` 中添加 Dio 和 `shared_preferences` 依赖,然后创建 `NetworkService` 类封装 Dio 的功能,包括请求拦截、响应拦截、Token 存储和登录请求。最后,通过一个登录界面示例展示了如何在实际应用中使用 `NetworkService` 进行身份验证。希望本文能帮助你在 Flutter 中更好地处理网络请求和用户认证。
158 1
|
2月前
|
网络协议 Java 程序员
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
37 2
|
2月前
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
50 0
|
3月前
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
177 4
|
4月前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
142 0
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
4月前
|
关系型数据库 API Go
[golang]在Gin框架中使用JWT鉴权
[golang]在Gin框架中使用JWT鉴权
107 0
|
4月前
|
网络协议 Go
[golang]gin框架接收websocket通信
[golang]gin框架接收websocket通信
114 0
|
5月前
|
Go 开发者
golang的http客户端封装
golang的http客户端封装
83 0
|
5月前
|
JavaScript API 数据处理
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
47 0
|
5月前
|
缓存 JSON 安全
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(一)
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(一)
42 0