OpenAPI & Service Generator
Optionales Node-Skript, das zusätzlich zum Core HTTP-Client bereitgestellt wird. Wird nur verwendet, um TypeScript-Typen und Dienstdateien aus OpenAPI/Swagger JSON zu generieren.
Optionale Funktion: Nicht erforderlich für die Verwendung des Cores
Allgemeine Benutzer von @byeolnaerim/typed-rx-http, /next oder /rsocket müssen dieses Skript nicht ausführen und müssen openapi-typescript nicht im Projekt installieren.
Isolierung der openapi-typescript-Abhängigkeit
Für die Erstellung von OpenAPI-Typen ist die openapi-typescript CLI erforderlich, aber das Paket wird nicht in die allgemeinen Abhängigkeiten aufgenommen. Die devDependencies.typescript von typed-rx-http halten sich an den Standard von TypeScript 6.0.3 und verwenden nur eine separate npx-Temporärumgebung im OpenAPI-Auto-Node-Skript.
Im grundlegenden OpenAPI-Generierungsprozess werden openapi-typescript und [email protected] zusammen ausgeführt, sodass die in Ihrem Projekt installierte TypeScript/openapi-typescript-Version nicht geändert oder nicht verwendet wird.
Wenn nötig, kann der gesamte Befehl auf openApiTypescriptCommand festgelegt werden.
Alternativ können Sie nur die Paketversion ändern, die den Standardbefehl konfiguriert.
Zuerst: Bereiten Sie die Projektdatei vor, auf die commonServiceFile verweist.
Bevor commonServiceFile im Generatorbeispiel erscheint, müssen Sie diese Datei verstehen. commonServiceFile ist der Pfad zur Projektbesitzdatei, die die gemeinsamen HTTP-Funktionen des generierten Dienstes importiert, nicht eine Option, die eine Datei erstellt. Der Dateiname kann frei gewählt werden, z. B. rxjsHttpService.ts, commonService.ts.
Minimale vollständige Codeversion
Die folgende Datei erstellt einmal den createHttpClient im Projekt und exportiert callApi und callApiStream zur Wiederverwendung durch den generierten Dienst. Wenn kein Cache oder keine Sitzungsauthentifizierung erforderlich ist, können Sie mit dieser Struktur beginnen.
rxjsHttpService.ts
tsVollständiger Code einschließlich Session/CSR/SSR-Cache
Wenn der generierte Dienst callApiClientCache oder callApiServerCache verwenden soll oder wenn Next.js die header und Sitzungsauthentifizierung pro Anfrage gemeinsam verarbeiten soll, erweitern Sie es in dieser vollständigen Form.
rxjsHttpService.ts
tsAusführungsweise
Generierte Dateien
Die Standardeinstellungen erzeugen die folgenden Dateien.
apiUnionArrays.tserzeugt nicht nur OpenAPI-Schema-Enums, sondern auch readonly-Konstantenarrays für die Enums von Abfrage-, Pfad-, Header- und Cookie-Parametern und verarbeitet auch die items.enum von Abfrageparametern.
Optional: Verbindung zwischen Backend-Swagger und Projekt-commonService
Hier beginnt ein Beispiel, wie der Generator mit einem echten Projekt verbunden wird. WebFlux/webflux-fe-dev-assistant ist nur eine Möglichkeit, Swagger bereitzustellen, und keine zwingende Abhängigkeit.
Vorbereitung der Swagger-Dokumentation
Swagger kann von Springdoc, anderen OpenAPI-Tools oder von Ihnen selbst erstellten Dateien stammen. Wenn Sie WebFlux-Funktionsendpunkte verwenden, können Sie webflux-fe-dev-assistantEs kann auch eine Methode verwendet werden, um Swagger-Dokumentation bereitzustellen.
Beispiel für die Generierung mit expliziten Optionen im Projekt
Sie können den Backend-Endpunkt, den zu speichernden swagger.json, den Typ-/Service-Ausgabepfad und commonServiceFile entsprechend der Projektstruktur angeben.
generateSwagger.cjs
jsIn Umgebungen, in denen Dokumente nicht über HTTP empfangen werden können, können Sie die gleichen Ausgabeoptionen verwenden. Swagger aus Datei generierenkann verwendet werden.
commonServiceFile ist der Importzielpfad
commonServiceFileist der Pfad zur Projektbesitzdatei, die die generierte Dienstleistung callApi, callApiStream und den Cache-Wrapper importiert. Der Generator hat keine Option, diese Datei zu erstellen oder zu überschreiben.
ApiBusinessService.ts
tsBeispiel für die Platzierung der Generierungsergebnisse im Projekt
Eine gemeinsame Datei, die als commonServiceFile wie rxjsHttpService.ts angegeben ist, wird direkt vom Projekt verwaltet. Die Ergebnisse unter auto und @types/auto werden neu generiert, wenn sich das Dokument ändert.
Dateinamen- und Funktionsnamensregeln
Der Name der Dienstdatei wird aus den ersten beiden Segmenten der URL gebildet, der Funktionsname aus dem dritten und den folgenden Segmenten. Pfadvariablen werden in der Form By + PascalCase in den Funktionsnamen aufgenommen.
GET /api/business/workplaces/search
ApiBusinessService.ts → workplacesSearch({ params })
GET /api/business/workplaces/{id}
ApiBusinessService.ts → workplacesById({ path })
GET /api/orders/history/search
ApiOrdersService.ts → historySearch({ params })
POST /oauth2/login
Oauth2LoginService.ts → post({ body })
Argumente für den Aufruf der Generierungsfunktion
GeneratedServiceUsage.tsx
tsxDer Schlüssel für die Abfrageparameter des generierten Dienstes ist params, die Pfadvariable ist path, der Anfragekörper ist body. Innerhalb der Generierungsfunktion werden sie jeweils in die ServiceArguments von queryString, pathVariable und body umgewandelt.