routes method

List<WebRoute> routes(
  1. String path, {
  2. required WebRequest rq,
  3. bool useRouteAll = true,
  4. bool useRouteDelete = true,
  5. bool useRouteInsert = true,
  6. bool useRouteUpdate = true,
  7. bool useRouteGetOne = true,
  8. bool paging = true,
  9. int pageSize = 20,
  10. bool orderReverse = true,
  11. String orderBy = '_id',
  12. Future<ApiDoc>? docAll()?,
  13. Future<ApiDoc>? docDelete()?,
  14. Future<ApiDoc>? docInsert()?,
  15. Future<ApiDoc>? docUpdate()?,
  16. Future<ApiDoc>? docOne()?,
  17. List<WebRoute> children = const [],
})

Generates a complete set of REST API routes for this collection.

This method creates standard CRUD (Create, Read, Update, Delete) routes for the collection, providing a full REST API interface. Each route type can be individually enabled or disabled.

Generated routes:

  • GET /path - List all documents (with optional pagination)
  • GET /path/{id} - Get single document by ID
  • POST /path - Create new document
  • POST /path/{id} - Update existing document
  • GET /path/delete/{id} - Delete document by ID

Parameters:

  • path - Base URL path for the API routes
  • rq - Web request instance for handling HTTP requests
  • useRouteAll - Enable/disable the get all documents route
  • useRouteDelete - Enable/disable the delete document route
  • useRouteInsert - Enable/disable the create document route
  • useRouteUpdate - Enable/disable the update document route
  • useRouteGetOne - Enable/disable the get single document route
  • paging - Enable/disable pagination for the get all route
  • pageSize - Default page size for pagination
  • orderReverse - Default sort order (true for descending)
  • orderBy - Default field to sort by
  • docAll - Optional API documentation generator for get all route
  • docDelete - Optional API documentation generator for delete route
  • docInsert - Optional API documentation generator for insert route
  • docUpdate - Optional API documentation generator for update route
  • docOne - Optional API documentation generator for get one route
  • children - Additional child routes to include

Returns a list of WebRoute objects ready to be registered with the router.

Example:

var apiRoutes = userCollection.routes('/api/users', rq: request);
router.addRoutes(apiRoutes);

Implementation

List<WebRoute> routes(
  String path, {
  required WebRequest rq,
  bool useRouteAll = true,
  bool useRouteDelete = true,
  bool useRouteInsert = true,
  bool useRouteUpdate = true,
  bool useRouteGetOne = true,
  bool paging = true,
  int pageSize = 20,
  bool orderReverse = true,
  String orderBy = '_id',
  Future<ApiDoc>? Function()? docAll,
  Future<ApiDoc>? Function()? docDelete,
  Future<ApiDoc>? Function()? docInsert,
  Future<ApiDoc>? Function()? docUpdate,
  Future<ApiDoc>? Function()? docOne,
  List<WebRoute> children = const [],
}) {
  return <WebRoute>[
    if (children.isNotEmpty)
      WebRoute(
        rq: rq,
        path: path,
        children: children,
      ),
    if (useRouteAll)
      routeGetAll(
        path,
        rq: rq,
        paging: paging,
        pageSize: pageSize,
        orderReverse: orderReverse,
        orderBy: orderBy,
        apiDoc: docAll,
      ),
    if (useRouteGetOne) routeGetOne('$path/{id}', rq: rq, apiDoc: docOne),
    if (useRouteDelete)
      routeDeleteOne(
        '$path/delete/{id}',
        rq: rq,
        apiDoc: docDelete,
      ),
    if (useRouteInsert) routeInsert(path, rq: rq, apiDoc: docInsert),
    if (useRouteUpdate) routeUpdate('$path/{id}', rq: rq, apiDoc: docUpdate),
  ];
}