Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Route groups #37

Closed
vadimi opened this issue Jun 27, 2014 · 4 comments
Closed

Route groups #37

vadimi opened this issue Jun 27, 2014 · 4 comments

Comments

@vadimi
Copy link

vadimi commented Jun 27, 2014

Hi,

Is there a way to define route groups similar to Martini?

m.Group("/books", func(r martini.Router) {
    r.Get("/:id", GetBooks)
    r.Post("/new", NewBook)
    r.Put("/update/:id", UpdateBook)
    r.Delete("/delete/:id", DeleteBook)
})

By the way, goji looks really great!

@elithrar
Copy link
Contributor

Yep -

books := web.New()
goji.Handle("/books/*", books)

books.Get("/books/:id", GetBooks)
books.Post("/books/new", NewBook)
...
books.Use(SomeMiddleware)
...
goji.Get("/", ShowIndex)
goji.Serve()

Excuse the formatting (not near a computer).

Make sure you specify the full route in your sub-routes i.e. "/books/:id"
and not just "/:id" as per above.

A sub-router in this context has no default middleware applied so you will
need to call books.Use to add request logging, etc.

hope that helps.

On Friday, June 27, 2014, Vadim notifications@github.com wrote:

Hi,

Is there a way to define route groups similar to Martini?

m.Group("/books", func(r martini.Router) {
r.Get("/:id", GetBooks)
r.Post("/new", NewBook)
r.Put("/update/:id", UpdateBook)
r.Delete("/delete/:id", DeleteBook)})

By the way, goji looks really great!


Reply to this email directly or view it on GitHub
#37.

@vadimi
Copy link
Author

vadimi commented Jun 27, 2014

Thanks, that's almost what I was looking for. It also would be nice not to specify "/books/" in every route.

@zenazn
Copy link
Owner

zenazn commented Jun 27, 2014

@elithrar The middleware from the main router are still applied, so you'll still get request logging, etc. You'll even keep the same environment across the two Muxes!

@vadimi As always, the standard library saves the day: http://golang.org/pkg/net/http/#StripPrefix :)

(The behavior of the trailing "*" in string routes is always something that's struck me as a bit suspect. For instance, it might be nice to bind the "tail" to a variable, for instance. Unfortunately I haven't gotten around to figuring out what I want to do here, but I'd appreciate any thoughts you have as you use it!)

@vadimi
Copy link
Author

vadimi commented Jun 27, 2014

@zenazn StripPrefix worked perfectly fine. Thanks a lot.

@vadimi vadimi closed this as completed Jun 27, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants