/
http_wrapper_group.go
62 lines (51 loc) · 2.28 KB
/
http_wrapper_group.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package server
import (
"github.com/gin-gonic/gin"
"net/http"
)
// HttpWrapperGroup http 包装器
type HttpWrapperGroup[CTX any] struct {
wrapper *HttpWrapper[CTX]
group *gin.RouterGroup
}
// Handle 处理请求
func (slf *HttpWrapperGroup[CTX]) Handle(httpMethod, relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
slf.group.Handle(httpMethod, relativePath, handlersToGinHandlers(slf.wrapper.packHandle, handlers)...)
return slf
}
// Use 使用中间件
func (slf *HttpWrapperGroup[CTX]) Use(middleware ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
slf.group.Use(handlersToGinHandlers(slf.wrapper.packHandle, middleware)...)
return slf
}
// GET 注册 GET 请求
func (slf *HttpWrapperGroup[CTX]) GET(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodGet, relativePath, handlers...)
}
// POST 注册 POST 请求
func (slf *HttpWrapperGroup[CTX]) POST(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodPost, relativePath, handlers...)
}
// DELETE 注册 DELETE 请求
func (slf *HttpWrapperGroup[CTX]) DELETE(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodDelete, relativePath, handlers...)
}
// PATCH 注册 PATCH 请求
func (slf *HttpWrapperGroup[CTX]) PATCH(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodPatch, relativePath, handlers...)
}
// PUT 注册 PUT 请求
func (slf *HttpWrapperGroup[CTX]) PUT(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodPut, relativePath, handlers...)
}
// OPTIONS 注册 OPTIONS 请求
func (slf *HttpWrapperGroup[CTX]) OPTIONS(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return slf.Handle(http.MethodOptions, relativePath, handlers...)
}
// Group 创建分组
func (slf *HttpWrapperGroup[CTX]) Group(relativePath string, handlers ...HttpWrapperHandleFunc[CTX]) *HttpWrapperGroup[CTX] {
return &HttpWrapperGroup[CTX]{
wrapper: slf.wrapper,
group: slf.group.Group(relativePath, handlersToGinHandlers(slf.wrapper.packHandle, handlers)...),
}
}