Skip to content

Commit

Permalink
feat:Add Routes method for server (zeromicro#2125)
Browse files Browse the repository at this point in the history
Co-authored-by: czyt <[email protected]>
  • Loading branch information
czyt and czyt authored Jul 11, 2022
1 parent 24787a9 commit d71b3c8
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
9 changes: 9 additions & 0 deletions rest/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,15 @@ func (s *Server) PrintRoutes() {
s.ngin.print()
}

// Routes returns the Http routers which are registered in the engine
func (s *Server) Routes() []Route {
routers := make([]Route, len(s.ngin.routes))
for _, r := range s.ngin.routes {
routers = append(routers, r.routes...)
}
return routers
}

// Start starts the Server.
// Graceful shutdown is enabled by default.
// Use proc.SetTimeToForceQuit to customize the graceful shutdown period.
Expand Down
50 changes: 50 additions & 0 deletions rest/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,56 @@ Port: 54321
assert.Equal(t, expect, out)
}

func TestServer_Routes(t *testing.T) {
const (
configYaml = `
Name: foo
Port: 54321
`
expect = `GET /foo GET /bar GET /foo/:bar GET /foo/:bar/baz`
)

var cnf RestConf
assert.Nil(t, conf.LoadFromYamlBytes([]byte(configYaml), &cnf))

svr, err := NewServer(cnf)
assert.Nil(t, err)

svr.AddRoutes([]Route{
{
Method: http.MethodGet,
Path: "/foo",
Handler: http.NotFound,
},
{
Method: http.MethodGet,
Path: "/bar",
Handler: http.NotFound,
},
{
Method: http.MethodGet,
Path: "/foo/:bar",
Handler: http.NotFound,
},
{
Method: http.MethodGet,
Path: "/foo/:bar/baz",
Handler: http.NotFound,
},
})

routes := svr.Routes()
var buf strings.Builder
for i := 0; i < len(routes); i++ {
buf.WriteString(routes[i].Method)
buf.WriteString(" ")
buf.WriteString(routes[i].Path)
buf.WriteString(" ")
}

assert.Equal(t, expect, strings.Trim(buf.String(), " "))
}

func TestHandleError(t *testing.T) {
assert.NotPanics(t, func() {
handleError(nil)
Expand Down

0 comments on commit d71b3c8

Please sign in to comment.