1 Star 0 Fork 0

Arnolixi/web-drive

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
responder.go 855 Bytes
一键复制 编辑 原始数据 按行查看 历史
Arnolixi 提交于 2021-11-17 16:13 . gin 脚手架
package arc
import (
"reflect"
"sync"
"github.com/gin-gonic/gin"
)
var responderList []Responder
var once_resp_list sync.Once
func get_resp_list() []Responder {
once_resp_list.Do(func() {
responderList = []Responder{
ResponderForJson(nil),
}
})
return responderList
}
type Responder interface {
RespondTo() gin.HandlerFunc
}
type Json interface{}
type ResponderForJson func(ctx *gin.Context) Json
func (r ResponderForJson) RespondTo() gin.HandlerFunc {
return func(ctx *gin.Context) {
// ctx.String(200,r(ctx))
ctx.JSON(200, r(ctx))
}
}
func Convert(handler interface{}) gin.HandlerFunc {
h_ref := reflect.ValueOf(handler)
for _, resp := range get_resp_list() {
r_ref := reflect.TypeOf(resp)
if h_ref.Type().ConvertibleTo(r_ref) {
return h_ref.Convert(r_ref).Interface().(Responder).RespondTo()
}
}
return nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/arnolixi/web-drive.git
git@gitee.com:arnolixi/web-drive.git
arnolixi
web-drive
web-drive
v1.0.8

搜索帮助

D67c1975 1850385 1daf7b77 1850385