Документація / OpenAPI
OpenAPI
Одна команда перетворює Ваші моделі та маршрути на специфікацію OpenAPI 3.1.
Додано у 1.0
Hopak уже знає Ваш API: моделі оголошують поля, типи та обмеження; CRUD-маршрути генеруються з моделей. hopak openapi перетворює це знання на документ OpenAPI 3.1 — без жодної анотації.
hopak openapi # prints to stdout
hopak openapi --out api.json # writes a file
Передавайте його одразу в генератор клієнта:
hopak openapi | bunx openapi-typescript /dev/stdin -o api.d.ts
Що Ви отримуєте
- Схеми моделей — кожна модель стає двома component-схемами:
Post(форма відповіді — поляpassword/secret/tokenвирізані,id+ таймстемпи присутні) таPostInput(тіло запиту — чутливі поля включені, безid). - Типізовані CRUD-операції — маршрути, зібрані через
crud.*, несуть метадані з прив’язкою до своєї моделі, тожGET /api/postsдокументує реальний конверт{ items, total, limit, offset },POSTдокументує тіло запиту та відповіді201/400/409, і так далі. - Path-параметри — сегменти
[id]стають{id}із заповненими path-параметрами. - Обмеження —
.min()/.max()/.pattern()/ значення enum перетікають у схеми.
Власні маршрути
Написані вручну маршрути з’являються з узагальненою відповіддю 200. Щоб задокументувати такий маршрут відносно моделі, задайте openapi у defineRoute:
export const GET = defineRoute({
handler: async (ctx) => { /* ... */ },
openapi: { model: 'post', kind: 'read', summary: 'Fetch one post' },
});