Hono
Hono🔥 is a small, simple, and ultrafast web framework built on Web Standards.
It was originally designed as a lightweight framework for building web applications on Cloudflare. Now It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Lambda@Edge, and Node.js.
API for a TODO Application
For simplicity, no database is used here.
import { Hono, Router } from '@hono/core'
import { serve } from '@hono/serve'
const app = new Hono()
const router = new Router()
const tasks = [
{ id: 1, title: 'Buy groceries' },
]
// Retrieve all tasks
router.get('/tasks', c => {
return c.json(tasks)
})
// Retrieve a specific task
router.get('/tasks/:id', c => {
const taskId = c.req.param('id')
const task = tasks.find(t => t.id == parseInt(taskId))
return task ? c.json(task) : c.notFound()
})
// Create a new task
router.post('/tasks', c => {
const task = c.req.body
task.id = tasks.length + 1 // Assign a unique ID
tasks.push(task)
return c.json(task)
})
// Update a task
router.put('/tasks/:id', c => {
const taskId = c.req.param('id')
const task = tasks.find(t => t.id == parseInt(taskId))
if (!task) {
return c.notFound()
}
tasks[tasks.indexOf(task)] = c.req.body
return c.noContent()
})
// Delete a task
router.delete('/tasks/:id', c => {
const taskId = c.req.param('id')
const taskIndex = tasks.findIndex(t => t.id == parseInt(taskId))
if (taskIndex == -1) {
return c.notFound()
}
tasks.splice(taskIndex, 1)
return c.noContent()
})
app.use('/api', router)
serve({ port: 3000, handler: app })