-
Notifications
You must be signed in to change notification settings - Fork 0
/
route_all.go
70 lines (57 loc) · 1.92 KB
/
route_all.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
63
64
65
66
67
68
69
70
//go:build !js && !wasm
// +build !js,!wasm
package mux
import "net/http"
// A function that handles a request.
func (r *Route) ServeHTTP(w http.ResponseWriter, req *http.Request) {
r.Handler.ServeHTTP(w, req)
}
func (r *Route) Get(path string, handler Handler, name ...string) *Route {
return r.Handle(GET, path, handler, name...)
}
func (r *Route) Post(path string, handler Handler, name ...string) *Route {
return r.Handle(POST, path, handler, name...)
}
func (r *Route) Put(path string, handler Handler, name ...string) *Route {
return r.Handle(PUT, path, handler, name...)
}
func (r *Route) Delete(path string, handler Handler, name ...string) *Route {
return r.Handle(DELETE, path, handler, name...)
}
func (r *Route) Head(path string, handler Handler, name ...string) *Route {
return r.Handle(HEAD, path, handler, name...)
}
func (r *Route) Patch(path string, handler Handler, name ...string) *Route {
return r.Handle(PATCH, path, handler, name...)
}
func (r *Route) Options(path string, handler Handler, name ...string) *Route {
return r.Handle(OPTIONS, path, handler, name...)
}
func (r *Route) Any(path string, handler Handler, name ...string) *Route {
return r.Handle(ANY, path, handler, name...)
}
func (r *Route) HandleFunc(method string, path string, handler func(w http.ResponseWriter, r *http.Request), name ...string) *Route {
return r.Handle(method, path, NewHandler(handler), name...)
}
// Handle adds a handler to the route.
//
// It returns the route that was added so that it can be used to add children.
func (r *Route) Handle(method string, path string, handler Handler, name ...string) *Route {
var n string
if len(name) > 0 {
n = name[0]
}
var route = &Route{
Path: r.Path.CopyAppend(
NewPathInfo(path),
),
Handler: handler,
Name: n,
Method: method,
Parent: r,
ParentMux: r.ParentMux,
identifier: randInt64(),
}
r.Children = append(r.Children, route)
return route
}