0
0
Expressframework~5 mins

Resource-based route organization in Express

Choose your learning style9 modes available
Introduction

Resource-based route organization helps keep your web app routes clear and easy to manage by grouping routes around data types or resources.

When building a web API that handles users, posts, or products.
When you want to keep your routes organized by the type of data they work with.
When multiple routes share a common base path like '/users' or '/orders'.
When you want to follow common web standards for URLs.
When you want easier maintenance and clearer code structure.
Syntax
Express
const express = require('express');
const router = express.Router();

// Define routes for a resource
router.get('/', (req, res) => { /* list all resources */ });
router.post('/', (req, res) => { /* create new resource */ });
router.get('/:id', (req, res) => { /* get resource by id */ });
router.put('/:id', (req, res) => { /* update resource by id */ });
router.delete('/:id', (req, res) => { /* delete resource by id */ });

module.exports = router;

Use express.Router() to create a mini-router for each resource.

Routes use HTTP methods (GET, POST, PUT, DELETE) to represent actions on resources.

Examples
Route to get a list of all users.
Express
router.get('/', (req, res) => { res.send('List users'); });
Route to create a new user.
Express
router.post('/', (req, res) => { res.send('Create user'); });
Route to get a user by their unique ID.
Express
router.get('/:id', (req, res) => { res.send(`Get user ${req.params.id}`); });
Route to delete a user by ID.
Express
router.delete('/:id', (req, res) => { res.send(`Delete user ${req.params.id}`); });
Sample Program

This example creates a small Express app with resource-based routes for users. It groups all user-related routes under '/users'. Each route handles a common action like listing, creating, or deleting users.

Express
const express = require('express');
const app = express();
const port = 3000;

const usersRouter = express.Router();

// List all users
usersRouter.get('/', (req, res) => {
  res.send('User list');
});

// Create a new user
usersRouter.post('/', (req, res) => {
  res.send('User created');
});

// Get user by ID
usersRouter.get('/:id', (req, res) => {
  res.send(`User details for ID: ${req.params.id}`);
});

// Update user by ID
usersRouter.put('/:id', (req, res) => {
  res.send(`User updated with ID: ${req.params.id}`);
});

// Delete user by ID
usersRouter.delete('/:id', (req, res) => {
  res.send(`User deleted with ID: ${req.params.id}`);
});

// Use the usersRouter for routes starting with /users
app.use('/users', usersRouter);

app.listen(port, () => {
  console.log(`Server running on http://localhost:${port}`);
});
OutputSuccess
Important Notes

Resource-based routes make your API predictable and easier to understand.

Use app.use('/resource', router) to mount resource routers.

Remember to handle errors and validate data in real apps.

Summary

Resource-based route organization groups routes by data type or resource.

Use Express Router to keep routes modular and clean.

Common HTTP methods map to actions on resources (GET, POST, PUT, DELETE).