0 Star 1 Fork 0

shallot/Go开发工具集

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
router_file.go 1.09 KB
一键复制 编辑 原始数据 按行查看 历史
shallot 提交于 2024-12-16 13:44 +08:00 . 添加自实现的gin框架。
package router
import (
"fmt"
"gitee.com/gxsshallot/gotool/gin"
)
// 普通参数键
var RouterFileParamKey = "params"
// (自动处理返回值) 上传文件路由处理流程
func RouterFile[REQ any, RSP any](handler RouterHandler[REQ, RSP]) gin.HandlerFunc {
return _inner_router_file(handler, true)
}
// (不处理返回值) 上传文件路由处理流程
func RouterFileNoResponse[REQ any, RSP any](handler RouterHandler[REQ, RSP]) gin.HandlerFunc {
return _inner_router_file(handler, false)
}
// 路由处理流程
func _inner_router_file[REQ any, RSP any](handler RouterHandler[REQ, RSP], hasResponse bool) gin.HandlerFunc {
return func(c *gin.Context) {
var (
paramObj REQ
err error
)
jsonStr, ok := c.GetPostForm(RouterFileParamKey)
if !ok {
Failure(c, fmt.Errorf("请使用%s作为参数键", RouterFileParamKey))
return
}
if err = jsonUnmarshal([]byte(jsonStr), &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

搜索帮助