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

目录
相关文章
|
3月前
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
45 0
|
3月前
|
Go
golang力扣leetcode 2039.网络空闲的时刻
golang力扣leetcode 2039.网络空闲的时刻
20 0
|
3月前
|
NoSQL Go Redis
Golang实现redis系列-(3)封装RESP协议
Golang实现redis系列-(3)封装RESP协议
43 0
|
12天前
|
关系型数据库 API Go
[golang]在Gin框架中使用JWT鉴权
[golang]在Gin框架中使用JWT鉴权
|
12天前
|
网络协议 Go
[golang]gin框架接收websocket通信
[golang]gin框架接收websocket通信
|
1月前
|
JavaScript API 数据处理
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
22 0
|
1月前
|
缓存 JSON 安全
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(一)
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(一)
23 0
|
2月前
|
Go
golang读取网络字节并解压zip
golang读取网络字节并解压zip
18 0
|
2月前
|
缓存 JavaScript API
【vue实战项目】通用管理系统:封装token操作和网络请求
【vue实战项目】通用管理系统:封装token操作和网络请求
26 0
|
2月前
计算机网络——数据链路层-封装成帧(帧定界、透明传输-字节填充,比特填充、MTU)
计算机网络——数据链路层-封装成帧(帧定界、透明传输-字节填充,比特填充、MTU)
103 0