0 Star 1 Fork 0

shallot/Go开发工具集

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
router.go 997 Bytes
Copy Edit Raw Blame History
shallot authored 2024-12-16 13:44 +08:00 . 添加自实现的gin框架。
package router
import (
"gitee.com/gxsshallot/gotool/gin"
)
// 没有REQ或RSP
type NO_OBJ map[string]interface{}
// 通用路由处理函数
type RouterHandler[REQ any, RSP any] func(*gin.Context, REQ) (RSP, error)
// (自动处理返回值) 路由处理流程
func Router[REQ any, RSP any](handler RouterHandler[REQ, RSP]) gin.HandlerFunc {
return _inner_router(handler, true)
}
// (不处理返回值) 路由处理流程
func RouterNoResponse[REQ any, RSP any](handler RouterHandler[REQ, RSP]) gin.HandlerFunc {
return _inner_router(handler, false)
}
// 路由处理流程
func _inner_router[REQ any, RSP any](handler RouterHandler[REQ, RSP], hasResponse bool) gin.HandlerFunc {
return func(c *gin.Context) {
var (
paramObj REQ
err error
)
if err = c.ShouldBindJSON(&paramObj); err != nil {
Failure(c, err)
return
}
rsp, err := handler(c, paramObj)
if !hasResponse {
return
}
if err != nil {
Failure(c, err)
return
}
Success(c, rsp)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/gxsshallot/gotool.git
git@gitee.com:gxsshallot/gotool.git
gxsshallot
gotool
Go开发工具集
1a4cf42e06b6

Search