Skip to main content

REST API Example

Complete REST API implementation with CRUD operations.

Using the Router

const router = new Router()

let items = [
{ id: 1, name: 'Item 1', description: 'First item' },
{ id: 2, name: 'Item 2', description: 'Second item' }
]
let nextId = 3

router.get('/', (req, res) => {
res.json({ items, count: items.length })
})

router.get('/:id', (req, res) => {
const id = parseInt(req.params.id)
const item = items.find(i => i.id === id)
if (!item) return res.status(404).json({ error: 'Item not found' })
res.json({ item })
})

router.post('/', (req, res) => {
const { name, description } = req.body
if (!name) return res.status(400).json({ error: 'Name is required' })
const newItem = { id: nextId++, name, description: description || '' }
items.push(newItem)
res.status(201).json({ item: newItem })
})

router.put('/:id', (req, res) => {
const id = parseInt(req.params.id)
const item = items.find(i => i.id === id)
if (!item) return res.status(404).json({ error: 'Item not found' })
const { name, description } = req.body
if (name) item.name = name
if (description !== undefined) item.description = description
res.json({ item })
})

router.delete('/:id', (req, res) => {
const id = parseInt(req.params.id)
const index = items.findIndex(i => i.id === id)
if (index === -1) return res.status(404).json({ error: 'Item not found' })
items.splice(index, 1)
res.status(204).end()
})

export default router