ホームページ >ウェブフロントエンド >jsチュートリアル >Hono OpenAPI の紹介: HonoJS の API ドキュメントの簡素化
まず最初に: Hono 用の OpenAPI ライブラリがすでに存在するのに、なぜ別の OpenAPI ライブラリを作成するのでしょうか?
これは多くの人から寄せられた質問です。はい、Yuuke が作成した Zod OpenAPI があります。これは優れたパッケージですが、新しいソリューションの作成につながる重大な制限がいくつかあります。
2 つのアプローチを比較することで、hono-openapi が構築された理由を詳しく見てみましょう。
@hono/zod-openapi を使用した例を次に示します:
// Using @hono/zod-openapi import { OpenAPIHono, createRoute, z } from '@hono/zod-openapi'; const ParamsSchema = z.object({ id: z .string() .min(3) .openapi({ param: { name: 'id', in: 'path', }, example: '1212121', }), }); const route = createRoute({ method: 'get', path: '/users/{id}', request: { params: ParamsSchema, }, }); const app = new OpenAPIHono(); app.openapi(route, (c) => { const { id } = c.req.valid('param'); return c.json({ id, age: 20, name: 'Ultra-man' }); }); // The OpenAPI documentation will be available at /doc app.doc('/doc', { openapi: '3.0.0', info: { version: '1.0.0', title: 'My API', }, });
次に、これを hono-openapi で書かれた同じアプリケーションと比較します。
// Using Hono-OpenAPI import z from 'zod'; import { Hono } from 'hono'; import { describeRoute } from 'hono-openapi'; import { resolver, validator as zValidator } from 'hono-openapi/zod'; // Extending the Zod schema with OpenAPI properties import 'zod-openapi/extend'; const paramSchema = z.object({ id: z.string().min(3).openapi({ example: '1212121' }), }); const app = new Hono(); app.get( '/', zValidator('param', paramSchema), (c) => { const param = c.req.valid('param'); return c.text(`Hello ${param?.id}!`); } ); app.get( '/openapi', openAPISpecs(app, { documentation: { info: { title: 'Hono', version: '1.0.0', description: 'API for greeting users', }, servers: [ { url: 'http://localhost:3000', description: 'Local server' }, ], }, }) );
違いは明らかです。hono-openapi を使用すると、標準 HonoJS ワークフロー内で直接作業できます。これにより、急な学習曲線がなくなり、構文が確実に HonoJS のドキュメントや規約と一致するようになります。
@hono/zod-openapi では、既存の HonoJS アプリケーションを改良して OpenAPI 仕様を生成するのは大きな課題です。大規模なアプリケーションのルートの書き換えには時間がかかり、エラーが発生しやすくなります。 hono-openapi はミドルウェアとして動作することでこの問題を解決するため、大きな変更を加えることなく既存のアプリに追加できます。
オリジナルのライブラリは Zod のみをサポートしています。 Zod は優れていますが、多くの開発者は Valibot、ArkType、TypeBox などの代替手段を使用しています。 hono-openapi はバリデータに依存せず、複数のライブラリに対する最上級のサポートを提供します。
「そもそも、なぜ OpenAPI 仕様にこだわる必要があるの?」と疑問に思う人もいるかもしれません。私のアプリはそれらなしでも正常に動作します。」
OpenAPI 仕様の生成が変革をもたらす理由は次のとおりです:
フロントエンド開発者とバックエンド開発者が API の詳細を手動で同期する必要があるチームで働いたことがある場合は、それがどれほど苦痛であるかがわかるでしょう。 OpenAPI 仕様は、単一の信頼できる情報源を提供することでこの問題を解決します。
これらの課題に対処し、ベストプラクティスを促進するために、hono-openapi は次の目標を念頭に置いて構築されました。
これがあなたが待ち望んでいた解決策のように思われる場合は、ライブラリをチェックして会話に参加してください:
この記事を読んで、hono-openapi を試してみて、API の構築と文書化がどのように簡素化されるかを理解していただければ幸いです。あなたのフィードバックは重要です!一緒に強力な HonoJS コミュニティを構築しましょう。
以上がHono OpenAPI の紹介: HonoJS の API ドキュメントの簡素化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。