Project Structure
Express REST API Structure
A maintainable Node.js API can separate routing, controllers, services, repositories, validation, middleware, configuration, and infrastructure.
Example:
src/
routes/
controllers/
services/
repositories/
middleware/
validators/
errors/
config/
app.js
server.js
The exact structure is less important than maintaining clear boundaries. Avoid turning routes.js into a file containing database queries, authentication, validation, business rules, and response formatting.
Express Router
const router = express.Router();
router.get('/users/:id', authenticate, userController.getById);
router.post('/users', authenticate, validate(createUserSchema), userController.create);
router.patch('/users/:id', authenticate, validate(updateUserSchema), userController.update);
router.delete('/users/:id', authenticate, userController.remove);💡 Routing remains focused on composing middleware and mapping HTTP requests to controllers.