UNPKG

@misterzik/espressojs

Version:

EspressoJS Introducing Espresso.JS, your ultimate Express configuration starting point and boilerplate. With its simplicity and lack of opinionation, EspressoJS offers plug-and-play configurations built on top of Express.

117 lines (96 loc) 2.66 kB
/* * EspressoJS - Example API Routes * This file demonstrates how to create custom API routes */ const express = require('express'); const router = express.Router(); const { body, validationResult } = require('express-validator'); const { asyncHandler, AppError } = require('../server/middleware/errorHandler'); // Example: GET all items router.get('/items', asyncHandler(async (req, res) => { const items = [ { id: 1, name: 'Item 1', description: 'First item' }, { id: 2, name: 'Item 2', description: 'Second item' }, ]; res.status(200).json({ status: 'success', results: items.length, data: { items } }); })); // Example: GET single item by ID router.get('/items/:id', asyncHandler(async (req, res) => { const { id } = req.params; // Simulate database lookup const item = { id, name: `Item ${id}`, description: 'Example item' }; if (!item) { throw new AppError('Item not found', 404); } res.status(200).json({ status: 'success', data: { item } }); })); // Example: POST create new item with validation router.post('/items', [ body('name').notEmpty().withMessage('Name is required'), body('description').optional().isLength({ max: 500 }) ], asyncHandler(async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ status: 'fail', errors: errors.array() }); } const { name, description } = req.body; // Simulate database insert const newItem = { id: Date.now(), name, description, createdAt: new Date().toISOString() }; res.status(201).json({ status: 'success', data: { item: newItem } }); }) ); // Example: PUT update item router.put('/items/:id', [ body('name').optional().notEmpty(), body('description').optional().isLength({ max: 500 }) ], asyncHandler(async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ status: 'fail', errors: errors.array() }); } const { id } = req.params; const updates = req.body; // Simulate database update const updatedItem = { id, ...updates, updatedAt: new Date().toISOString() }; res.status(200).json({ status: 'success', data: { item: updatedItem } }); }) ); // Example: DELETE item router.delete('/items/:id', asyncHandler(async (req, res) => { const { id } = req.params; // Simulate database delete res.status(204).send(); })); module.exports = router;