Router Package
Route Groups
Group routes with shared attributes like middleware, prefixes, and constraints.
Route Groups
Group routes with shared attributes like middleware, prefixes, and constraints.
Basic Groups
Route.group(() => {
Route.get("/users", UserController.index);
Route.post("/users", UserController.store);
});
With Prefix
Route.group(() => {
Route.get("/users", UserController.index);
Route.get("/users/:id", UserController.show);
}).prefix("/api/v1");
With Middleware
Route.group(() => {
Route.get("/users", UserController.index);
Route.post("/users", UserController.store);
}).middleware("auth");
Multiple Middleware
Route.group(() => {
Route.get("/admin", AdminController.index);
}).middleware(["auth", "admin"]);
Chaining
Route.group(() => {
Route.get("/users", UserController.index);
Route.post("/users", UserController.store);
Route.get("/users/:id", UserController.show);
})
.prefix("/api")
.middleware("auth")
.name("api.");
Nested Groups
Route.group(() => {
Route.group(() => {
Route.get("/users", UserController.index);
})
.prefix("/admin")
.middleware("admin");
Route.group(() => {
Route.get("/users", PublicController.index);
}).prefix("/public");
}).prefix("/api/v1");
Without Middleware
Remove middleware from a group:
Route.group(() => {
Route.get("/public", PublicController.index);
})
.middleware("api")
.withoutMiddleware("auth");
Named Groups
Route.group(() => {
Route.get("/users", UserController.index).name("index");
})
.prefix("/api")
.name("api.users.");
// Results in route name: api.users.index
Next Steps
- Controllers -- Controller decorators
- Middleware -- Route middleware
- Resource Routes -- RESTful routing