Skip to content

Commit 439e4a9

Browse files
committed
optimize http components
1 parent d9cc711 commit 439e4a9

File tree

4 files changed

+156
-116
lines changed

4 files changed

+156
-116
lines changed

component/http/context.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import (
1010
)
1111

1212
type Resp struct {
13-
Code int `json:"code"` // 响应码
14-
Data any `json:"data,omitempty"` // 响应数据
13+
Code int `json:"code"` // 响应码
14+
Message string `json:"message"` // 响应消息
15+
Data any `json:"data,omitempty"` // 响应数据
1516
}
1617

1718
type Context interface {
@@ -47,20 +48,22 @@ func (c *context) Proxy() *Proxy {
4748
func (c *context) Failure(rst any) error {
4849
switch v := rst.(type) {
4950
case error:
50-
return c.JSON(&Resp{Code: codes.Convert(v).Code()})
51+
code := codes.Convert(v)
52+
53+
return c.JSON(&Resp{Code: code.Code(), Message: code.Message()})
5154
case *codes.Code:
52-
return c.JSON(&Resp{Code: v.Code()})
55+
return c.JSON(&Resp{Code: v.Code(), Message: v.Message()})
5356
default:
54-
return c.JSON(&Resp{Code: codes.Unknown.Code()})
57+
return c.JSON(&Resp{Code: codes.Unknown.Code(), Message: codes.Unknown.Message()})
5558
}
5659
}
5760

5861
// Success 成功响应
5962
func (c *context) Success(data ...any) error {
6063
if len(data) > 0 {
61-
return c.JSON(&Resp{Code: codes.OK.Code(), Data: data[0]})
64+
return c.JSON(&Resp{Code: codes.OK.Code(), Message: codes.OK.Message(), Data: data[0]})
6265
} else {
63-
return c.JSON(&Resp{Code: codes.OK.Code()})
66+
return c.JSON(&Resp{Code: codes.OK.Code(), Message: codes.OK.Message()})
6467
}
6568
}
6669

component/http/proxy.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,27 @@ import (
66
)
77

88
type Proxy struct {
9-
http *Http
9+
server *Server
1010
}
1111

12-
func newProxy(h *Http) *Proxy {
13-
return &Proxy{http: h}
12+
func newProxy(s *Server) *Proxy {
13+
return &Proxy{server: s}
1414
}
1515

1616
// Router 获取路由器
1717
func (p *Proxy) Router() Router {
18-
return &router{app: p.http.app}
18+
return &router{app: p.server.app}
1919
}
2020

2121
// NewMeshClient 新建微服务客户端
22-
// target参数可分为两种模式:
22+
// target参数可分为三种模式:
2323
// 服务直连模式: direct://127.0.0.1:8011
24+
// 服务直连模式: direct://711baf8d-8a06-11ef-b7df-f4f19e1f0070
2425
// 服务发现模式: discovery://service_name
2526
func (p *Proxy) NewMeshClient(target string) (transport.Client, error) {
26-
if p.http.opts.transporter == nil {
27+
if p.server.opts.transporter == nil {
2728
return nil, errors.ErrMissTransporter
2829
}
2930

30-
return p.http.opts.transporter.NewClient(target)
31+
return p.server.opts.transporter.NewClient(target)
3132
}

component/http/router.go

Lines changed: 99 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -4,195 +4,231 @@ import (
44
"github.com/gofiber/fiber/v3"
55
)
66

7-
type Handler func(ctx Context) error
7+
type Handler = func(ctx Context) error
88

99
type Router interface {
1010
// Get 添加GET请求处理器
11-
Get(path string, handler Handler, middlewares ...Handler) Router
12-
// Post 添加GET请求处理器
13-
Post(path string, handler Handler, middlewares ...Handler) Router
11+
Get(path string, handler any, middlewares ...any) Router
12+
// Post 添加POST请求处理器
13+
Post(path string, handler any, middlewares ...any) Router
1414
// Head 添加HEAD请求处理器
15-
Head(path string, handler Handler, middlewares ...Handler) Router
15+
Head(path string, handler any, middlewares ...any) Router
1616
// Put 添加PUT请求处理器
17-
Put(path string, handler Handler, middlewares ...Handler) Router
17+
Put(path string, handler any, middlewares ...any) Router
1818
// Delete 添加DELETE请求处理器
19-
Delete(path string, handler Handler, middlewares ...Handler) Router
19+
Delete(path string, handler any, middlewares ...any) Router
2020
// Connect 添加CONNECT请求处理器
21-
Connect(path string, handler Handler, middlewares ...Handler) Router
21+
Connect(path string, handler any, middlewares ...any) Router
2222
// Options 添加OPTIONS请求处理器
23-
Options(path string, handler Handler, middlewares ...Handler) Router
23+
Options(path string, handler any, middlewares ...any) Router
2424
// Trace 添加TRACE请求处理器
25-
Trace(path string, handler Handler, middlewares ...Handler) Router
25+
Trace(path string, handler any, middlewares ...any) Router
2626
// Patch 添加PATCH请求处理器
27-
Patch(path string, handler Handler, middlewares ...Handler) Router
27+
Patch(path string, handler any, middlewares ...any) Router
2828
// Add 添加路由处理器
29-
Add(methods []string, path string, handler Handler, middlewares ...Handler) Router
29+
Add(methods []string, path string, handler any, middlewares ...any) Router
3030
// Group 路由组
31-
Group(prefix string, handlers ...Handler) Router
31+
Group(prefix string, handlers ...any) Router
3232
}
3333

3434
type router struct {
3535
app *fiber.App
3636
}
3737

3838
// Get 添加GET请求处理器
39-
func (r *router) Get(path string, handler Handler, middlewares ...Handler) Router {
39+
func (r *router) Get(path string, handler any, middlewares ...any) Router {
4040
return r.Add([]string{fiber.MethodGet}, path, handler, middlewares...)
4141
}
4242

4343
// Post 添加POST请求处理器
44-
func (r *router) Post(path string, handler Handler, middlewares ...Handler) Router {
44+
func (r *router) Post(path string, handler any, middlewares ...any) Router {
4545
return r.Add([]string{fiber.MethodPost}, path, handler, middlewares...)
4646
}
4747

4848
// Head 添加HEAD请求处理器
49-
func (r *router) Head(path string, handler Handler, middlewares ...Handler) Router {
49+
func (r *router) Head(path string, handler any, middlewares ...any) Router {
5050
return r.Add([]string{fiber.MethodHead}, path, handler, middlewares...)
5151
}
5252

5353
// Put 添加PUT请求处理器
54-
func (r *router) Put(path string, handler Handler, middlewares ...Handler) Router {
54+
func (r *router) Put(path string, handler any, middlewares ...any) Router {
5555
return r.Add([]string{fiber.MethodPut}, path, handler, middlewares...)
5656
}
5757

5858
// Delete 添加DELETE请求处理器
59-
func (r *router) Delete(path string, handler Handler, middlewares ...Handler) Router {
59+
func (r *router) Delete(path string, handler any, middlewares ...any) Router {
6060
return r.Add([]string{fiber.MethodDelete}, path, handler, middlewares...)
6161
}
6262

6363
// Connect 添加CONNECT请求处理器
64-
func (r *router) Connect(path string, handler Handler, middlewares ...Handler) Router {
64+
func (r *router) Connect(path string, handler any, middlewares ...any) Router {
6565
return r.Add([]string{fiber.MethodConnect}, path, handler, middlewares...)
6666
}
6767

6868
// Options 添加OPTIONS请求处理器
69-
func (r *router) Options(path string, handler Handler, middlewares ...Handler) Router {
69+
func (r *router) Options(path string, handler any, middlewares ...any) Router {
7070
return r.Add([]string{fiber.MethodOptions}, path, handler, middlewares...)
7171
}
7272

7373
// Trace 添加TRACE请求处理器
74-
func (r *router) Trace(path string, handler Handler, middlewares ...Handler) Router {
74+
func (r *router) Trace(path string, handler any, middlewares ...any) Router {
7575
return r.Add([]string{fiber.MethodTrace}, path, handler, middlewares...)
7676
}
7777

7878
// Patch 添加PATCH请求处理器
79-
func (r *router) Patch(path string, handler Handler, middlewares ...Handler) Router {
79+
func (r *router) Patch(path string, handler any, middlewares ...any) Router {
8080
return r.Add([]string{fiber.MethodPatch}, path, handler, middlewares...)
8181
}
8282

8383
// All 添加任意请求处理器
84-
func (r *router) All(path string, handler Handler, middlewares ...Handler) Router {
84+
func (r *router) All(path string, handler any, middlewares ...any) Router {
8585
return r.Add(fiber.DefaultMethods, path, handler, middlewares...)
8686
}
8787

8888
// Add 添加路由处理器
89-
func (r *router) Add(methods []string, path string, handler Handler, middlewares ...Handler) Router {
89+
func (r *router) Add(methods []string, path string, handler any, middlewares ...any) Router {
9090
handlers := make([]fiber.Handler, 0, len(middlewares))
9191
for i := range middlewares {
9292
middleware := middlewares[i]
93-
handlers = append(handlers, func(ctx fiber.Ctx) error {
94-
return middleware(&context{Ctx: ctx})
95-
})
93+
94+
switch h := middleware.(type) {
95+
case fiber.Handler:
96+
handlers = append(handlers, h)
97+
case Handler:
98+
handlers = append(handlers, func(ctx fiber.Ctx) error {
99+
return h(&context{Ctx: ctx})
100+
})
101+
}
102+
}
103+
104+
switch h := handler.(type) {
105+
case fiber.Handler:
106+
r.app.Add(methods, path, h, handlers...)
107+
case Handler:
108+
r.app.Add(methods, path, func(ctx fiber.Ctx) error {
109+
return h(&context{Ctx: ctx})
110+
}, handlers...)
96111
}
97112

98-
r.app.Add(methods, path, func(ctx fiber.Ctx) error {
99-
return handler(&context{Ctx: ctx})
100-
}, handlers...)
101113
return r
102114
}
103115

104116
// Group 路由组
105-
func (r *router) Group(prefix string, handlers ...Handler) Router {
106-
list := make([]fiber.Handler, 0, len(handlers))
107-
for i := range handlers {
108-
handler := handlers[i]
109-
list = append(list, func(ctx fiber.Ctx) error {
110-
return handler(&context{Ctx: ctx})
111-
})
117+
func (r *router) Group(prefix string, middlewares ...any) Router {
118+
handlers := make([]fiber.Handler, 0, len(middlewares))
119+
for i := range middlewares {
120+
middleware := middlewares[i]
121+
122+
switch h := middleware.(type) {
123+
case fiber.Handler:
124+
handlers = append(handlers, h)
125+
case Handler:
126+
handlers = append(handlers, func(ctx fiber.Ctx) error {
127+
return h(&context{Ctx: ctx})
128+
})
129+
}
112130
}
113131

114-
return &routeGroup{router: r.app.Group(prefix)}
132+
return &routeGroup{router: r.app.Group(prefix, handlers...)}
115133
}
116134

117135
type routeGroup struct {
118136
router fiber.Router
119137
}
120138

121139
// Get 添加GET请求处理器
122-
func (r *routeGroup) Get(path string, handler Handler, middlewares ...Handler) Router {
140+
func (r *routeGroup) Get(path string, handler any, middlewares ...any) Router {
123141
return r.Add([]string{fiber.MethodGet}, path, handler, middlewares...)
124142
}
125143

126144
// Post 添加GET请求处理器
127-
func (r *routeGroup) Post(path string, handler Handler, middlewares ...Handler) Router {
145+
func (r *routeGroup) Post(path string, handler any, middlewares ...any) Router {
128146
return r.Add([]string{fiber.MethodPost}, path, handler, middlewares...)
129147
}
130148

131149
// Head 添加HEAD请求处理器
132-
func (r *routeGroup) Head(path string, handler Handler, middlewares ...Handler) Router {
150+
func (r *routeGroup) Head(path string, handler any, middlewares ...any) Router {
133151
return r.Add([]string{fiber.MethodHead}, path, handler, middlewares...)
134152
}
135153

136154
// Put 添加PUT请求处理器
137-
func (r *routeGroup) Put(path string, handler Handler, middlewares ...Handler) Router {
155+
func (r *routeGroup) Put(path string, handler any, middlewares ...any) Router {
138156
return r.Add([]string{fiber.MethodPut}, path, handler, middlewares...)
139157
}
140158

141159
// Delete 添加DELETE请求处理器
142-
func (r *routeGroup) Delete(path string, handler Handler, middlewares ...Handler) Router {
160+
func (r *routeGroup) Delete(path string, handler any, middlewares ...any) Router {
143161
return r.Add([]string{fiber.MethodDelete}, path, handler, middlewares...)
144162
}
145163

146164
// Connect 添加CONNECT请求处理器
147-
func (r *routeGroup) Connect(path string, handler Handler, middlewares ...Handler) Router {
165+
func (r *routeGroup) Connect(path string, handler any, middlewares ...any) Router {
148166
return r.Add([]string{fiber.MethodConnect}, path, handler, middlewares...)
149167
}
150168

151169
// Options 添加OPTIONS请求处理器
152-
func (r *routeGroup) Options(path string, handler Handler, middlewares ...Handler) Router {
170+
func (r *routeGroup) Options(path string, handler any, middlewares ...any) Router {
153171
return r.Add([]string{fiber.MethodOptions}, path, handler, middlewares...)
154172
}
155173

156174
// Trace 添加TRACE请求处理器
157-
func (r *routeGroup) Trace(path string, handler Handler, middlewares ...Handler) Router {
175+
func (r *routeGroup) Trace(path string, handler any, middlewares ...any) Router {
158176
return r.Add([]string{fiber.MethodTrace}, path, handler, middlewares...)
159177
}
160178

161179
// Patch 添加PATCH请求处理器
162-
func (r *routeGroup) Patch(path string, handler Handler, middlewares ...Handler) Router {
180+
func (r *routeGroup) Patch(path string, handler any, middlewares ...any) Router {
163181
return r.Add([]string{fiber.MethodPatch}, path, handler, middlewares...)
164182
}
165183

166184
// All 添加任意请求处理器
167-
func (r *routeGroup) All(path string, handler Handler, middlewares ...Handler) Router {
185+
func (r *routeGroup) All(path string, handler any, middlewares ...any) Router {
168186
return r.Add(fiber.DefaultMethods, path, handler, middlewares...)
169187
}
170188

171189
// Add 添加路由处理器
172-
func (r *routeGroup) Add(methods []string, path string, handler Handler, middlewares ...Handler) Router {
190+
func (r *routeGroup) Add(methods []string, path string, handler any, middlewares ...any) Router {
173191
handlers := make([]fiber.Handler, 0, len(middlewares))
174192
for i := range middlewares {
175193
middleware := middlewares[i]
176-
handlers = append(handlers, func(ctx fiber.Ctx) error {
177-
return middleware(&context{Ctx: ctx})
178-
})
194+
195+
switch h := middleware.(type) {
196+
case fiber.Handler:
197+
handlers = append(handlers, h)
198+
case Handler:
199+
handlers = append(handlers, func(ctx fiber.Ctx) error {
200+
return h(&context{Ctx: ctx})
201+
})
202+
}
203+
}
204+
205+
switch h := handler.(type) {
206+
case fiber.Handler:
207+
r.router.Add(methods, path, h, handlers...)
208+
case Handler:
209+
r.router.Add(methods, path, func(ctx fiber.Ctx) error {
210+
return h(&context{Ctx: ctx})
211+
}, handlers...)
179212
}
180213

181-
r.router.Add(methods, path, func(ctx fiber.Ctx) error {
182-
return handler(&context{Ctx: ctx})
183-
}, handlers...)
184214
return r
185215
}
186216

187217
// Group 路由组
188-
func (r *routeGroup) Group(prefix string, handlers ...Handler) Router {
189-
list := make([]fiber.Handler, 0, len(handlers))
190-
for i := range handlers {
191-
handler := handlers[i]
192-
list = append(list, func(ctx fiber.Ctx) error {
193-
return handler(&context{Ctx: ctx})
194-
})
218+
func (r *routeGroup) Group(prefix string, middlewares ...any) Router {
219+
handlers := make([]fiber.Handler, 0, len(middlewares))
220+
for i := range middlewares {
221+
middleware := middlewares[i]
222+
223+
switch h := middleware.(type) {
224+
case fiber.Handler:
225+
handlers = append(handlers, h)
226+
case Handler:
227+
handlers = append(handlers, func(ctx fiber.Ctx) error {
228+
return h(&context{Ctx: ctx})
229+
})
230+
}
195231
}
196232

197-
return &routeGroup{router: r.router.Group(prefix)}
233+
return &routeGroup{router: r.router.Group(prefix, handlers...)}
198234
}

0 commit comments

Comments
 (0)