Files
quark-go/pkg/adapter/zeroadapter/zeroadapter.go
2023-07-13 18:24:11 +08:00

68 lines
1.4 KiB
Go

package zeroadapter
import (
"net/http"
"github.com/quarkcms/quark-go/v2/pkg/builder"
"github.com/zeromicro/go-zero/rest"
)
// 适配gozero框架路由
func RouteAdapter(b *builder.Engine, routePath string) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// 转换Request对象
context := b.NewContext(w, r)
// 设置路由
context.SetFullPath(routePath)
b.Render(context)
}
}
// 适配gozero框架
func Adapter(b *builder.Engine, server *rest.Server) {
// 获取注册的服务
routePaths := b.GetRoutePaths()
// 路由组列表
routes := []rest.Route{}
// 解析服务
for _, v := range routePaths {
if v.Method == "Any" {
routes = append(routes, rest.Route{
Method: http.MethodGet,
Path: v.Path,
Handler: RouteAdapter(b, v.Path),
})
routes = append(routes, rest.Route{
Method: http.MethodPost,
Path: v.Path,
Handler: RouteAdapter(b, v.Path),
})
routes = append(routes, rest.Route{
Method: http.MethodDelete,
Path: v.Path,
Handler: RouteAdapter(b, v.Path),
})
routes = append(routes, rest.Route{
Method: http.MethodPut,
Path: v.Path,
Handler: RouteAdapter(b, v.Path),
})
} else {
routes = append(routes, rest.Route{
Method: v.Method,
Path: v.Path,
Handler: RouteAdapter(b, v.Path),
})
}
}
server.AddRoutes(routes)
}