v2/examples/rest-api-simple/architecture.md
This is a minimalist REST API designed to demonstrate basic CRUD operations with a clean, simple architecture that can be understood and extended easily.
graph TB
Client[HTTP Client] --> API[Express Server]
subgraph "Express Application"
API --> MW[Middleware Stack]
MW --> Routes[Route Handlers]
Routes --> Data[In-Memory Data Store]
end
Routes --> Response[JSON Response]
Response --> Client
subgraph "Middleware Components"
MW --> JSON[JSON Parser]
MW --> URL[URL Encoder]
MW --> Error[Error Handler]
end
subgraph "API Endpoints"
Routes --> Health[GET /health]
Routes --> List[GET /api/v1/tasks]
Routes --> Get[GET /api/v1/tasks/:id]
Routes --> Create[POST /api/v1/tasks]
Routes --> Update[PUT /api/v1/tasks/:id]
Routes --> Delete[DELETE /api/v1/tasks/:id]
end
/api/v1/tasks)sequenceDiagram
participant C as Client
participant S as Server
participant M as Middleware
participant R as Route Handler
participant D as Data Store
C->>S: HTTP Request
S->>M: Process Request
M->>R: Route to Handler
R->>D: Data Operation
D->>R: Result
R->>S: Format Response
S->>C: JSON Response
// Centralized error handling pattern
app.use((err, req, res, next) => {
const status = err.status || 500;
const message = err.message || 'Internal server error';
res.status(status).json({
error: {
message,
status,
timestamp: new Date().toISOString()
}
});
});
npm install
npm run dev # Uses nodemon for auto-reload
npm install --production
npm start
PORT: Server port (default: 3000)NODE_ENV: Environment (development/production)rest-api-simple/
├── server.js # All application logic
├── package.json # Dependencies and scripts
├── server.test.js # Test suite
└── README.md # User documentation
rest-api-simple/
├── src/
│ ├── routes/ # Route definitions
│ ├── middleware/ # Custom middleware
│ ├── models/ # Data models
│ └── utils/ # Helper functions
├── tests/ # Test files
└── config/ # Configuration