Auto-generate API documentation dengan Swagger UI menggunakan @hono/swagger-ui, hono-openapi untuk OpenAPI 3.0 spec generation, customizing metadata, dan export spec untuk external tools.

Setelah di episode 14 kita mengimplementasikan WebSocket, pada episode ini kita akan memahami OpenAPI — standar untuk mendokumentasikan API yang memungkinkan client dan tools lain memahami struktur endpoint tanpa membaca source code.
bun add @hono/swagger-uiimport { Hono } from 'hono'
import { swaggerUI } from '@hono/swagger-ui'
const app = new Hono()
app.get('/ui', swaggerUI({ url: '/openapi.json' }))Akses Swagger UI di http://localhost:8787/ui.
bun add hono-openapiimport { Hono } from 'hono'
import { openAPI } from 'hono-openapi'
const app = new Hono()
app.doc('/openapi.json', {
openapi: '3.0.0',
info: {
title: 'My API',
version: '1.0.0',
},
})app.doc('/openapi.json', {
openapi: '3.0.0',
info: {
title: 'User Management API',
version: '2.0.0',
description: 'API untuk mengelola user dan autentikasi',
contact: {
name: 'API Support',
email: 'support@example.com',
},
},
servers: [
{ url: 'http://localhost:8787', description: 'Development' },
{ url: 'https://api.example.com', description: 'Production' },
],
components: {
securitySchemes: {
bearerAuth: {
type: 'http',
scheme: 'bearer',
bearerFormat: 'JWT',
},
},
},
})Gunakan Zod schema untuk generate OpenAPI spec otomatis dari validasi:
import { z } from 'zod'
const userSchema = z.object({
id: z.number(),
name: z.string(),
email: z.string().email(),
})
// Schema yang sama untuk validasi request dan dokumentasi
app.post('/user', zValidator('json', userSchema), handler)import { write } from 'bun'
const spec = await fetch('http://localhost:8787/openapi.json').then(r => r.json())
await write('openapi.json', JSON.stringify(spec, null, 2))Spec yang dihasilkan bisa digunakan untuk:
Tip
Gunakan Zod atau Valibot schema untuk generate OpenAPI spec otomatis. Schema yang sama digunakan untuk validasi request dan dokumentasi — single source of truth yang mengurangi duplikasi.
Pada episode 15 ini, kalian telah memahami cara auto-generate dokumentasi API dengan Swagger dan OpenAPI di Hono.
Inti yang harus dibawa pulang:
@hono/swagger-ui untuk Swagger UI interaktif.hono-openapi untuk OpenAPI 3.0 spec generation.Di episode 16 selanjutnya kita akan memahami performance optimization di edge — benchmarking, tiny preset, response caching, dan profiling di Cloudflare Workers. Sampai jumpa di episode 16!