LLaraNode
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