PAS7 Studio
Ілюстрація Bun.js, Hono, OpenAPI та Scalar
Технології27 серп. 2026 р.·3 хв читання·Оновлено 27 серп. 2026 р.

Bun.js + Hono + OpenAPI: документований API зі Scalar

Практичний посібник зі створення легкого API на Bun.js і Hono, валідації через Zod та автоматичної OpenAPI-документації у Scalar.

TypeScript-розробникиАвтори public APIКоманди, які підтримують frontend і backend

Hono маршрутизує запити на Bun, Zod перевіряє payload, OpenAPI описує контракт, а Scalar показує інтерактивну документацію. Коли ці шари походять з узгодженої схеми, frontend і backend менше розходяться.

Один контракт видно і runtime, і людині, і генератору клієнта.
Документація оновлюється разом із route-кодом.
Hono залишається легким і добре підходить для edge-style API.
Xin

Архітектура контракту

Схема має бути executable-документацією, а не окремим Markdown-файлом, який швидко застаріває.

Hono

Швидкий router із Web стандартами Request/Response та middleware.

Zod

Перевіряє params, query і JSON body до виконання handler-а.

OpenAPI

Формалізує endpoint-и, відповіді, помилки та security-схеми.

Scalar

Віддає зручний інтерактивний API reference для команди й інтеграторів.

Один route-контракт обслуговує запит, валідацію, OpenAPI JSON і документацію Scalar.

Скріншот секції architecture

Крок 1: встановлення та базовий сервер

01

Встановіть пакети

BASH
bun init
bun add hono @hono/zod-openapi zod @scalar/hono-api-reference
02

Створіть OpenAPI app

TS
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
import { apiReference } from "@scalar/hono-api-reference";

const app = new OpenAPIHono();
const task = z.object({ id: z.string(), title: z.string(), done: z.boolean() });
const route = createRoute({ method: "get", path: "/tasks/{id}", request: { params: z.object({ id: z.string().uuid() }) }, responses: { 200: { content: { "application/json": { schema: task } }, description: "A task" } } });
app.openapi(route, (c) => c.json({ id: c.req.valid("param").id, title: "Read docs", done: false }));
03

Підключіть документацію

TS
app.doc("/openapi.json", { openapi: "3.1.0", info: { title: "Tasks API", version: "1.0.0" } });
app.get("/docs", apiReference({ spec: { url: "/openapi.json" } }));
export default { port: Number(Bun.env.PORT ?? 3000), fetch: app.fetch };

Запуск: bun run src/index.ts. Відкрийте /docs у браузері, а JSON-контракт доступний на /openapi.json.

Крок 2: валідація body та помилок

Описуйте не лише успішну відповідь. Клієнту потрібні стабільні схеми 400/404/500, інакше документація створює хибне відчуття типобезпеки.

TS
const createTask = createRoute({
  method: "post", path: "/tasks",
  request: { body: { content: { "application/json": { schema: z.object({ title: z.string().trim().min(1).max(120) }) } } } },
  responses: {
    201: { content: { "application/json": { schema: task } }, description: "Created" },
    422: { content: { "application/json": { schema: z.object({ error: z.string() }) } }, description: "Validation error" },
  },
});
app.openapi(createTask, async (c) => {
  const body = c.req.valid("json");
  return c.json({ id: crypto.randomUUID(), title: body.title, done: false }, 201);
});

Крок 3: contract-first для клієнтів

Frontend

Використовуйте /openapi.json як джерело для генерації fetch-клієнта або типів. Це зменшує дублювання DTO.

Публічна документація

Захистіть /docs у приватному API або додайте auth middleware, якщо endpoint-и не призначені для всіх.

Версіювання

Виносьте breaking changes у /v2 або окремий документ. Не змінюйте тихо required-поля в чинній схемі.

Тести та CI

01

Перевіряйте OpenAPI JSON

BASH
curl http://localhost:3000/openapi.json

Зберігайте snapshot або запускайте OpenAPI validator у CI, щоб випадково не видалити response schema.

02

Тестуйте через app.fetch

TS
import { expect, test } from "bun:test";
import app from "./index";
test("rejects invalid task id", async () => {
  const response = await app.fetch(new Request("http://localhost/tasks/nope"));
  expect(response.status).toBe(400);
});

Типові помилки

FAQ

Часті запитання

Чим Scalar відрізняється від Swagger UI?

Обидва показують OpenAPI-документацію. Scalar — сучасний API reference UI, який легко підключити окремим маршрутом у Hono.

Чи потрібен Node.js для Hono на Bun?

Ні. Hono використовує Web API і запускається на Bun, але залежності та runtime-specific API варто перевірити у своєму deployment.

Перевірено: 27 серп. 2026 р.Актуально для: Bun 1.3+Актуально для: Hono 4.xАктуально для: Zod 4.xАктуально для: OpenAPI 3.1Актуально для: ScalarПеревірено з: Bun runtimeПеревірено з: hono/zod-validatorПеревірено з: @hono/zod-openapiПеревірено з: @scalar/hono-api-reference

Висновок

Опишіть задачу — перші 15 хвилин консультації безкоштовні.

Пов'язані статті

Скільки коштує розробка AI асистента у 2026: RAG чатбот, база знань, CRM, Telegram та підтримка
ai-assistants

Скільки коштує розробка AI асистента у 2026: RAG чатбот, база знань, CRM, Telegram та підтримка

Практичний гід для бізнесу: від чого залежить ціна розробки AI асистента у 2026 році, що входить у RAG чатбот, інтеграції з CRM, Telegram, guardrails, оцінювання, моніторинг і супровід.

AI може зробити більше. Не краще: що насправді кажуть дослідження про розробку ігор
blogs

AI може зробити більше. Не краще: що насправді кажуть дослідження про розробку ігор

Generative AI входить у production ігор, але докази складніші за хайп. Розбираємо adoption, ставлення гравців, ризики якості та практичний workflow.

AI для розробки лендінгів: де він реально прискорює запуск, а де псує конверсію
blogs

AI для розробки лендінгів: де він реально прискорює запуск, а де псує конверсію

Дослідження про використання AI у розробці лендінгів: v0, Webflow AI, Builder.io, Framer-подібні AI builders, генерація UX, copy, SEO, персоналізація, A/B тести, ризики шаблонності, безпеки, доступності та технічного боргу.

AI SEO / GEO у 2026: ваші наступні клієнти — не люди, а агенти
growth

AI SEO / GEO у 2026: ваші наступні клієнти — не люди, а агенти

Пошук зміщується від кліків до відповідей. Боти та AI-агенти сканують, цитують, рекомендують і дедалі частіше купують. Дізнайтесь, що таке AI SEO / GEO, чому класичного SEO вже недостатньо, і як PAS7 Studio допомагає брендам перемагати у «агентному» вебі.

Професійна розробка для вашого бізнесу

Створюємо сучасні веб-рішення та боти для бізнесу. Дізнайтеся, як ми можемо допомогти вам досягти цілей.