Heim >Web-Frontend >js-Tutorial >Einführung von Hono OpenAPI: Vereinfachung der API-Dokumentation für HonoJS
Das Wichtigste zuerst: Warum eine weitere OpenAPI-Bibliothek für Hono erstellen, wenn es bereits eine gibt?
Diese Frage haben sich viele gestellt. Ja, es gibt Zod OpenAPI, erstellt von Yusuke. Obwohl es sich um ein großartiges Paket handelt, weist es einige erhebliche Einschränkungen auf, die zur Schaffung einer neuen Lösung geführt haben.
Lassen Sie uns erklären, warum hono-openapi entwickelt wurde, indem wir die beiden Ansätze vergleichen.
Hier ist ein Beispiel mit @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', }, });
Vergleichen Sie dies nun mit derselben Anwendung, die mit hono-openapi geschrieben wurde:
// 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' }, ], }, }) );
Der Unterschied ist klar: mit hono-openapi können Sie direkt im Standard-HonoJS-Workflow arbeiten. Dadurch entfällt die steile Lernkurve und es wird sichergestellt, dass die Syntax mit der Dokumentation und den Konventionen von HonoJS übereinstimmt.
Mit @hono/zod-openapi ist die Nachrüstung einer vorhandenen HonoJS-Anwendung zur Generierung von OpenAPI-Spezifikationen eine große Herausforderung. Das Umschreiben von Routen für eine große Anwendung kann zeitaufwändig und fehleranfällig sein. hono-openapi löst dieses Problem, indem es als Middleware fungiert, sodass Sie es ohne große Änderungen zu vorhandenen Apps hinzufügen können.
Die Originalbibliothek unterstützt nur Zod. Obwohl Zod ausgezeichnet ist, verwenden viele Entwickler Alternativen wie Valibot, ArkType und TypeBox. hono-openapi ist validatorunabhängig und bietet erstklassige Unterstützung für mehrere Bibliotheken.
Einige fragen sich vielleicht: „Warum sollte man sich überhaupt mit OpenAPI-Spezifikationen beschäftigen?“ Meine App funktioniert auch ohne sie.“
Aus diesem Grund ist die Generierung von OpenAPI-Spezifikationen ein entscheidender Faktor:
Wenn Sie jemals in einem Team gearbeitet haben, in dem Frontend- und Backend-Entwickler API-Details manuell synchronisieren mussten, wissen Sie, wie schmerzhaft das sein kann. OpenAPI-Spezifikationen lösen dieses Problem, indem sie eine einzige Quelle der Wahrheit bereitstellen.
Um diese Herausforderungen anzugehen und Best Practices zu fördern, wurde hono-openapi mit folgenden Zielen entwickelt:
Wenn das nach der Lösung klingt, auf die Sie gewartet haben, schauen Sie sich die Bibliothek an und beteiligen Sie sich an der Unterhaltung:
Ich hoffe, dieser Artikel überzeugt Sie, hono-openapi auszuprobieren und zu sehen, wie es das Erstellen und Dokumentieren von APIs vereinfacht. Ihr Feedback ist wichtig! Lassen Sie uns gemeinsam eine stärkere HonoJS-Community aufbauen.
Das obige ist der detaillierte Inhalt vonEinführung von Hono OpenAPI: Vereinfachung der API-Dokumentation für HonoJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!