OpenAPI & Générateur de Service
Script Node optionnel fourni séparément du client HTTP de base. Utilisé uniquement lors de la génération de types TypeScript et de fichiers de service à partir de JSON OpenAPI/Swagger.
Fonctionnalité optionnelle : non nécessaire pour l'utilisation de Core
Les utilisateurs de @byeolnaerim/typed-rx-http, /next ou /rsocket n'ont pas besoin d'exécuter ce script et n'ont pas besoin d'installer openapi-typescript dans leur projet.
Isolation de la dépendance openapi-typescript
La génération de types OpenAPI nécessite le CLI openapi-typescript, mais le package ne l'inclut pas dans les dépendances générales. Les devDependencies.typescript de typed-rx-http maintiennent la version TypeScript 6.0.3, et n'utilisent un environnement npx temporaire que dans le script auto node OpenAPI.
À l'étape de génération OpenAPI de base, openapi-typescript et [email protected] sont exécutés ensemble, donc cela ne modifie ni n'utilise la version TypeScript/openapi-typescript installée dans le projet de l'utilisateur.
Si nécessaire, vous pouvez fixer la commande complète à openApiTypescriptCommand.
Ou vous pouvez simplement changer la version du package qui compose la commande de base.
D'abord : préparez le fichier projet auquel commonServiceFile fera référence.
Avant que commonServiceFile n'apparaisse dans l'exemple de générateur, vous devez comprendre ce fichier. commonServiceFile n'est pas une option pour créer un fichier, mais le chemin du fichier possédé par le projet où le service généré importera des fonctions HTTP communes. Le nom du fichier peut être librement choisi, comme rxjsHttpService.ts, commonService.ts, etc.
Code complet de la forme minimale
Le fichier ci-dessous crée une fois createHttpClient dans le projet et exporte callApi et callApiStream pour réutilisation par le service généré. Si le cache ou l'authentification de session n'est pas nécessaire, vous pouvez commencer avec cette structure.
rxjsHttpService.ts
tsCode complet incluant le cache de session/CSR/SSR
Pour que le service généré utilise callApiClientCache ou callApiServerCache, ou pour gérer communément les en-têtes par requête et l'authentification de session dans Next.js, étendez-le à la forme complète suivante.
rxjsHttpService.ts
tsMode d'exécution
Fichiers générés
Les paramètres par défaut génèrent les fichiers ci-dessous.
apiUnionArrays.tsgénère non seulement l'énumération du schéma OpenAPI, mais aussi un tableau constant en lecture seule pour les énumérations de paramètres de requête, de chemin, d'en-tête et de cookie, et traite également les items.enum des paramètres de requête en tableau.
Option : connecter Swagger backend et commonService du projet
À partir d'ici, voici un exemple de connexion du générateur à un projet réel. WebFlux/webflux-fe-dev-assistant est une méthode pour fournir Swagger, mais ce n'est pas une dépendance obligatoire.
Préparation de la documentation Swagger
Swagger peut être Springdoc, un autre outil OpenAPI ou un fichier écrit manuellement. Si vous utilisez un point de terminaison fonctionnel WebFlux, webflux-fe-dev-assistantVous pouvez également utiliser cette méthode pour fournir la documentation Swagger.
Exemple de génération en spécifiant des options dans le projet
Vous pouvez spécifier l'endpoint backend, le swagger.json à enregistrer, le chemin de sortie des types/services et commonServiceFile selon la structure de votre projet.
generateSwagger.cjs
jsDans un environnement où la documentation ne peut pas être reçue par HTTP, vous pouvez utiliser generateSwaggerFromFileavec les mêmes options de sortie.
commonServiceFile est le chemin d'importation cible
commonServiceFileest le chemin du fichier possédé par le projet où le service généré importera callApi, callApiStream et le wrapper de cache. Ce n'est pas une option pour que le générateur crée ou écrase ce fichier.
ApiBusinessService.ts
tsExemple de résultats de génération dans le projet
Le fichier public désigné par commonServiceFile, comme rxjsHttpService.ts, est géré directement par le projet. Les résultats sous auto et @types/auto sont régénérés lorsque la documentation change.
Règles de nom de fichier et de fonction
Le nom du fichier de service est déterminé par les deux premiers segments de l'URL, et le nom de la fonction est déterminé par les segments suivants à partir du troisième. Les variables de chemin sont incluses dans le nom de la fonction sous la forme By + PascalCase.
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 })
Arguments d'appel de la fonction de génération
GeneratedServiceUsage.tsx
tsxLa clé du paramètre de requête du service généré est params, la variable de chemin est path, et le corps de la requête est body. À l'intérieur de la fonction de génération, ils sont convertis respectivement en ServiceArguments pour queryString, pathVariable et body.