70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
// Package router ...
|
|
//
|
|
// Description : router ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2024-07-20 21:39
|
|
package router
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
var (
|
|
ginRouter = gin.Default()
|
|
)
|
|
|
|
func init() {
|
|
|
|
}
|
|
|
|
// Register 注册路由
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 21:40 2024/7/20
|
|
func Register(port int, controllerList ...any) {
|
|
for _, controller := range controllerList {
|
|
if nil == controller {
|
|
// 忽略空指针
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
|
|
// parseController 解析controller
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 22:10 2024/7/20
|
|
func parseController(controller any) {
|
|
controllerType := reflect.TypeOf(controller)
|
|
controllerValue := reflect.ValueOf(controller)
|
|
routerPrefix := "/"
|
|
// 解析路由前缀函数
|
|
// routerPrefix 不能有任何入参, 并且只能有一个返回值,
|
|
// 返回值类型为字符串, 为具体路由前缀
|
|
routerPrefixFunc, routerPrefixFuncExist := controllerType.MethodByName(PrefixFuncName)
|
|
if routerPrefixFuncExist {
|
|
routerPrefixFuncType := routerPrefixFunc.Type
|
|
if routerPrefixFuncType.NumIn() == 1 && // 无任何入参, 正在没有如何入参情况下, 第一个参数是结构体指针
|
|
routerPrefixFuncType.NumOut() == 1 && // 只能有一个返回值
|
|
routerPrefixFuncType.Out(0).Kind() == reflect.String { // 返回值必须是字符串
|
|
routerPrefix = routerPrefixFunc.Func.Call([]reflect.Value{controllerValue})[0].String()
|
|
// .Call(nil)[0].String()
|
|
}
|
|
// 请求组的中间件
|
|
/*routerMiddlewareFunc := controllerType.MethodByName(MiddlewareFuncName)
|
|
routerMiddlewareFuncType := routerMiddlewareFunc.Type()
|
|
if routerMiddlewareFuncType.NumIn() == 0 && // 无需任何参数
|
|
routerMiddlewareFuncType.NumOut() == 1 && // 只能有一个返回值
|
|
routerMiddlewareFuncType.Out(0).String() == "[]gin.HandlerFunc" { // 返回值必须是gin.HandlerFunc
|
|
}*/
|
|
}
|
|
fmt.Println(routerPrefix)
|
|
}
|