anl 26.106.0 → 26.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.fr.md CHANGED
@@ -106,32 +106,30 @@ $ anl type
106
106
  "saveApiListFolderPath": "apps/api/",
107
107
  "saveEnumFolderPath": "apps/enums",
108
108
  "importEnumPath": "../../enums",
109
- "swaggerServers": {
110
- "url": "https://generator3.swagger.io/openapi2.json",
111
- "apiListFileName": "index.ts",
112
- "publicPrefix": "api",
113
- "headers": {}
114
- },
115
109
  "requestMethodsImportPath": "./fetch",
116
110
  "dataLevel": "serve",
111
+ "parameterSeparator": "_",
117
112
  "formatting": {
118
113
  "indentation": "\t",
119
114
  "lineEnding": "\n"
120
115
  },
121
- "headers": {},
122
- "includeInterface": [
123
- {
124
- "path": "/api/user",
125
- "method": "get"
126
- }
127
- ],
128
- "excludeInterface": [
129
- {
130
- "path": "/api/admin",
131
- "method": "post"
132
- }
133
- ],
134
- "parameterSeparator": "_",
116
+ "swaggerServers": {
117
+ "url": "https://generator3.swagger.io/openapi2.json",
118
+ "apiListFileName": "index.ts",
119
+ "publicPrefix": "/api",
120
+ "pathPrefix": "/gateway",
121
+ "dataLevel": "serve",
122
+ "parameterSeparator": "_",
123
+ "headers": {
124
+ "Authorization": "Bearer token"
125
+ },
126
+ "includeInterface": [
127
+ {
128
+ "path": "/api/user",
129
+ "method": "get"
130
+ }
131
+ ]
132
+ },
135
133
  "enmuConfig": {
136
134
  "erasableSyntaxOnly": false,
137
135
  "varnames": "enum-varnames",
@@ -164,12 +162,22 @@ $ anl type
164
162
  {
165
163
  "url": "https://generator3.swagger.io/openapi1.json",
166
164
  "apiListFileName": "op.ts",
167
- "headers": {}
165
+ "pathPrefix": "/forward",
166
+ "dataLevel": "serve",
167
+ "parameterSeparator": "_",
168
+ "headers": {},
169
+ "includeInterface": [
170
+ {
171
+ "path": "/op/trade/order/queryPage",
172
+ "method": "post"
173
+ }
174
+ ]
168
175
  },
169
176
  {
170
177
  "url": "https://generator3.swagger.io/openapi2.json",
171
178
  "apiListFileName": "index.ts",
172
179
  "publicPrefix": "/api",
180
+ "dataLevel": "data",
173
181
  "headers": {}
174
182
  }
175
183
  ]
@@ -186,22 +194,31 @@ $ anl type
186
194
  | importEnumPath | string | Oui | Chemin d'import enum (chemin des fichiers enum référencés dans apps/types/models/\*.ts) |
187
195
  | swaggerJsonUrl | string | Non | Adresse du document Swagger JSON (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) **Ce champ sera supprimé dans les versions futures** |
188
196
  | swaggerServers | object \| Array<object> | Non | Configuration des serveurs Swagger. Un seul serveur peut être directement rempli comme objet, plusieurs serveurs utilisent un tableau. Chaque serveur peut configurer `url`, `publicPrefix`, `apiListFileName`, `headers`<br />Ce champ correspond aux exemples de configuration d'un seul serveur Swagger et de plusieurs serveurs Swagger, veuillez faire défiler vers le haut pour voir |
189
- | swaggerServers[].url | string | Oui | Adresse du document Swagger JSON |
190
- | swaggerServers[].publicPrefix | string | Non | Préfixe commun sur le chemin URL, par exemple : api/users, api/users/{id}, api est le préfixe commun |
197
+ | swaggerServers[].url | string | Oui | Adresse du document Swagger JSON |
198
+ | swaggerServers[].publicPrefix | string | Non | Préfixe commun sur le chemin URL, par exemple : api/users, api/users/{id}, api est le préfixe commun |
199
+ | swaggerServers[].pathPrefix | string | Non | Préfixe de chemin de requête (peut être compris comme nom de module), sera ajouté automatiquement devant chaque chemin de requête API.<br />Par exemple : lorsque `pathPrefix: "/forward"`,<br />`/publicPrefix/pathPrefix/user` devient `/api/forward/user` |
191
200
  | swaggerServers[].apiListFileName | string | Non | Nom du fichier de liste API, par défaut `index.ts`. Lors de l'utilisation de plusieurs serveurs, le nom de fichier de chaque serveur doit être unique |
192
- | swaggerServers[].headers | object | Non | Configuration des en-têtes de requête |
193
- | requestMethodsImportPath | string | Oui | Chemin d'import des méthodes de requête |
194
- | dataLevel | 'data' \| 'serve' \| 'axios' | Oui | Niveau de données retournées par l'interface |
195
- | formatting | object | Non | Configuration du formatage du code |
201
+ | swaggerServers[].headers | object | Non | Configuration des en-têtes de requête pour ce serveur |
202
+ | swaggerServers[].dataLevel | 'data' \| 'serve' \| 'axios' | Non | Niveau de données de retour d'interface pour ce serveur. Si non défini, utilise la configuration globale `dataLevel` |
203
+ | swaggerServers[].parameterSeparator | '$' \| '\_' | Non | Séparateur utilisé lors de la génération des noms d'API et des noms de type pour ce serveur. Si non défini, utilise la configuration globale `parameterSeparator` |
204
+ | swaggerServers[].includeInterface | Array<{path: string, method: string}> | Non | Liste des interfaces incluses pour ce serveur. Si non définie, utilise la configuration globale `includeInterface` |
205
+ | swaggerServers[].excludeInterface | Array<{path: string, method: string}> | Non | Liste des interfaces exclues pour ce serveur. Si non définie, utilise la configuration globale `excludeInterface` |
206
+ | requestMethodsImportPath | string | Oui | Chemin d'import des méthodes de requête |
207
+ | dataLevel | 'data' \| 'serve' \| 'axios' | Non | Configuration globale du niveau de données de retour d'interface, valeur par défaut : `'serve'`. Chaque serveur peut le configurer individuellement pour remplacer |
208
+ | formatting | object | Non | Configuration du formatage du code |
209
+ | formatting.indentation | string | Non | Caractère d'indentation du code, par exemple : `"\t"` ou `" "` (deux espaces) |
210
+ | formatting.lineEnding | string | Non | Caractère de saut de ligne, par exemple : `"\n"` (LF) ou `"\r\n"` (CRLF) |
196
211
  | headers | object | Non | Configuration des en-têtes de requête (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
197
- | includeInterface | Array<{path: string, method: string}> | Non | Interfaces à inclure : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra que les interfaces de la liste, mutuellement exclusif avec `excludeInterface` |
198
- | excludeInterface | Array<{path: string, method: string}> | Non | Interfaces à exclure : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra pas les interfaces de cette liste, mutuellement exclusif avec `includeInterface` |
199
- | publicPrefix | string | Non | Préfixe commun sur le chemin URL (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
200
- | apiListFileName | string | Non | Nom du fichier de liste API, par défaut `index.ts` (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
201
- | enmuConfig.erasableSyntaxOnly | boolean | Oui | Doit être cohérent avec l'option `compilerOptions.erasableSyntaxOnly` de tsconfig.json. Si `true`, génère un objet const au lieu d'un enum (syntaxe de type uniquement). Valeur par défaut : `false` |
202
- | parameterSeparator | string | Non | Séparateur utilisé entre les segments de chemin et les paramètres lors de la génération des noms d'API et des noms de type. Par exemple, `/users/{userId}/posts` avec le séparateur `'_'` génère `users_userId_posts_GET`. Valeur par défaut : `'_'` |
203
- | enmuConfig.varnames | string | Non | Nom du champ dans le schéma Swagger contenant les noms personnalisés des membres d'enum. Valeur par défaut : `enum-varnames`. |
204
- | enmuConfig.comment | string | Non | Nom du champ dans le schéma Swagger contenant les descriptions des membres d'enum (utilisé pour générer des commentaires). Valeur par défaut : `enum-descriptions`. |
212
+ | includeInterface | Array<{path: string, method: string}> | Non | Interfaces incluses globalement : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra que les interfaces de la liste, mutuellement exclusif avec `excludeInterface`. Chaque serveur peut le configurer individuellement pour remplacer |
213
+ | excludeInterface | Array<{path: string, method: string}> | Non | Interfaces exclues globalement : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra pas les interfaces de cette liste, mutuellement exclusif avec `includeInterface`. Chaque serveur peut le configurer individuellement pour remplacer |
214
+ | publicPrefix | string | Non | Préfixe commun global sur le chemin URL (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
215
+ | pathPrefix | string | Non | Préfixe de chemin de requête global (chaque serveur peut le configurer individuellement pour remplacer) |
216
+ | apiListFileName | string | Non | Nom du fichier de liste API global, par défaut `index.ts` (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
217
+ | enmuConfig | object | Oui | Objet de configuration d'énumération |
218
+ | enmuConfig.erasableSyntaxOnly | boolean | Oui | Doit être cohérent avec l'option `compilerOptions.erasableSyntaxOnly` de tsconfig.json. Si `true`, génère un objet const au lieu d'un enum (syntaxe de type uniquement). Valeur par défaut : `false` |
219
+ | enmuConfig.varnames | string | Non | Nom du champ dans le schéma Swagger contenant les noms personnalisés des membres d'enum. Valeur par défaut : `enum-varnames`. |
220
+ | enmuConfig.comment | string | Non | Nom du champ dans le schéma Swagger contenant les descriptions des membres d'enum (utilisé pour générer des commentaires). Valeur par défaut : `enum-descriptions`. |
221
+ | parameterSeparator | '$' \| '\_' | Non | Séparateur utilisé globalement entre les segments de chemin et les paramètres lors de la génération des noms d'API et des noms de type. Par exemple, `/users/{userId}/posts` avec le séparateur `'_'` génère `users_userId_posts_GET`. Valeur par défaut : `'_'`. Chaque serveur peut le configurer individuellement pour remplacer |
205
222
 
206
223
  #### Relation entre les éléments de configuration et les fichiers générés
207
224
 
@@ -255,6 +272,48 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
255
272
 
256
273
  ### Explication des fonctionnalités
257
274
 
275
+ #### Priorité de Configuration
276
+
277
+ L'outil prend en charge la configuration globale et la configuration au niveau du serveur, en suivant ces règles de priorité :
278
+
279
+ **Priorité : Configuration au niveau du serveur > Configuration globale > Valeurs par défaut**
280
+
281
+ Les éléments de configuration suivants prennent en charge le remplacement au niveau du serveur de la configuration globale :
282
+
283
+ - `dataLevel` : Niveau de données de retour d'interface
284
+ - `parameterSeparator` : Séparateur pour les noms d'API et les noms de type
285
+ - `includeInterface` : Liste des interfaces incluses
286
+ - `excludeInterface` : Liste des interfaces exclues
287
+ - `pathPrefix` : Préfixe de chemin de requête
288
+ - `publicPrefix` : Préfixe commun d'URL
289
+ - `headers` : Configuration des en-têtes de requête
290
+
291
+ **Exemple :**
292
+
293
+ ```json
294
+ {
295
+ "dataLevel": "serve",
296
+ "parameterSeparator": "_",
297
+ "swaggerServers": [
298
+ {
299
+ "url": "http://api1.example.com/swagger.json",
300
+ "dataLevel": "data",
301
+ "apiListFileName": "api1.ts"
302
+ },
303
+ {
304
+ "url": "http://api2.example.com/swagger.json",
305
+ "apiListFileName": "api2.ts"
306
+ }
307
+ ]
308
+ }
309
+ ```
310
+
311
+ Dans la configuration ci-dessus :
312
+
313
+ - `api1.ts` utilise `dataLevel: "data"` (configuration au niveau du serveur)
314
+ - `api2.ts` utilise `dataLevel: "serve"` (configuration globale)
315
+ - Les deux serveurs utilisent `parameterSeparator: "_"` (configuration globale)
316
+
258
317
  #### Analyse de types
259
318
 
260
319
  - Support de tous les types de données de la spécification OpenAPI 3.0
@@ -305,6 +364,46 @@ interface User {
305
364
  }
306
365
  ```
307
366
 
367
+ #### Configuration du Niveau de Données (dataLevel)
368
+
369
+ `dataLevel` est utilisé pour configurer le niveau d'extraction des données retournées par l'interface, prend en charge trois options :
370
+
371
+ 1. **`'serve'` (valeur par défaut)** : Extrait le champ `data` retourné par le serveur
372
+
373
+ ```typescript
374
+ // Retour du serveur : { code: 200, message: 'success', data: { id: 1, name: 'user' } }
375
+ // Retour de la fonction : { id: 1, name: 'user' }
376
+ ```
377
+
378
+ 2. **`'data'`** : Extrait le champ `data.data` (adapté aux scénarios de data imbriquée)
379
+
380
+ ```typescript
381
+ // Retour du serveur : { data: { code: 200, data: { id: 1, name: 'user' } } }
382
+ // Retour de la fonction : { id: 1, name: 'user' }
383
+ ```
384
+
385
+ 3. **`'axios'`** : Retourne l'objet de réponse axios complet
386
+ ```typescript
387
+ // Retour du serveur : { code: 200, message: 'success', data: { id: 1, name: 'user' } }
388
+ // Retour de la fonction : { code: 200, message: 'success', data: { id: 1, name: 'user' } }
389
+ ```
390
+
391
+ **Exemple de configuration :**
392
+
393
+ ```json
394
+ {
395
+ "dataLevel": "serve",
396
+ "swaggerServers": [
397
+ {
398
+ "url": "http://api1.example.com/swagger.json",
399
+ "dataLevel": "data"
400
+ }
401
+ ]
402
+ }
403
+ ```
404
+
405
+ > **Note** : La configuration `dataLevel` au niveau du serveur remplacera la configuration globale.
406
+
308
407
  #### Téléchargement de fichiers
309
408
 
310
409
  Lorsqu'un type de téléchargement de fichier est détecté, les en-têtes de requête correspondants sont automatiquement ajoutés :
@@ -316,6 +415,33 @@ export const uploadFile = (params: UploadFile.Body) =>
316
415
  });
317
416
  ```
318
417
 
418
+ #### Formatage du Code
419
+
420
+ L'outil prend en charge des options de formatage de code personnalisées, contrôlées par la configuration `formatting` :
421
+
422
+ **Exemple de configuration :**
423
+
424
+ ```json
425
+ {
426
+ "formatting": {
427
+ "indentation": "\t",
428
+ "lineEnding": "\n"
429
+ }
430
+ }
431
+ ```
432
+
433
+ **Explication de la configuration :**
434
+
435
+ - `indentation` : Caractère d'indentation du code
436
+ - `"\t"` : Utiliser l'indentation Tab (par défaut)
437
+ - `" "` : Utiliser l'indentation de 2 espaces
438
+ - `" "` : Utiliser l'indentation de 4 espaces
439
+ - `lineEnding` : Type de saut de ligne
440
+ - `"\n"` : LF (style Linux/macOS, recommandé)
441
+ - `"\r\n"` : CRLF (style Windows)
442
+
443
+ **Note :** Si Prettier est configuré dans le projet, le code généré sera automatiquement formaté avec Prettier, et la configuration `formatting` peut être remplacée par Prettier.
444
+
319
445
  #### Gestion des erreurs
320
446
 
321
447
  L'outil intègre un mécanisme complet de gestion des erreurs :
@@ -372,8 +498,88 @@ L'outil prend en charge la configuration de plusieurs serveurs Swagger, chaque s
372
498
  - Les API des serveurs suivants seront ajoutées dans leurs propres fichiers `apiListFileName`
373
499
  - Les définitions de types et les enum seront fusionnées dans un dossier unifié pour éviter les doublons
374
500
 
501
+ **Configuration au niveau du serveur :**
502
+
503
+ Chaque serveur prend en charge une configuration indépendante des options suivantes. Si non configuré, la configuration globale est utilisée :
504
+
505
+ - `dataLevel` - Niveau de données de retour d'interface
506
+ - `parameterSeparator` - Séparateur pour les noms d'API et les noms de type
507
+ - `includeInterface` - Liste des interfaces incluses
508
+ - `excludeInterface` - Liste des interfaces exclues
509
+ - `pathPrefix` - Préfixe de chemin de requête
510
+
511
+ #### Préfixe de Chemin (pathPrefix)
512
+
513
+ `pathPrefix` est utilisé pour ajouter automatiquement un préfixe devant tous les chemins de requête API, ce qui est particulièrement utile dans les scénarios suivants :
514
+
515
+ 1. **Scénario de proxy inverse** : Lorsque le service backend est routé via un proxy inverse
516
+ 2. **Gateway d'API** : Ajouter uniformément un préfixe de gateway devant le chemin
517
+ 3. **Configuration multi-environnements** : Utiliser différents préfixes de chemin pour différents environnements
518
+
519
+ **Exemple d'utilisation :**
520
+
521
+ ```json
522
+ {
523
+ "swaggerServers": [
524
+ {
525
+ "url": "http://api.example.com/swagger.json",
526
+ "pathPrefix": "/forward",
527
+ "apiListFileName": "api.ts"
528
+ }
529
+ ]
530
+ }
531
+ ```
532
+
533
+ **Effet :**
534
+
535
+ Le chemin `/api/user/list` défini dans Swagger sera généré comme :
536
+
537
+ ```typescript
538
+ export const apiUserListGet = (params: ApiUserList_GET.Query) => GET<ApiUserList_GET.Response>('/forward/api/user/list', params);
539
+ ```
540
+
541
+ **Différence avec publicPrefix :**
542
+
543
+ - `publicPrefix` : Utilisé pour supprimer le préfixe commun du chemin d'interface (n'affecte que le nom de fonction généré)
544
+ - `pathPrefix` : Utilisé pour ajouter un préfixe devant le chemin de requête réel (affecte l'URL de requête à l'exécution)
545
+
375
546
  **Exemple de configuration :**
376
547
 
548
+ ```json
549
+ {
550
+ "swaggerServers": [
551
+ {
552
+ "url": "http://api1.example.com/swagger.json",
553
+ "apiListFileName": "api1.ts",
554
+ "publicPrefix": "/api/v1",
555
+ "pathPrefix": "/forward",
556
+ "dataLevel": "serve",
557
+ "parameterSeparator": "_",
558
+ "headers": {
559
+ "Authorization": "Bearer token1"
560
+ },
561
+ "includeInterface": [
562
+ {
563
+ "path": "/api/v1/users",
564
+ "method": "get"
565
+ }
566
+ ]
567
+ },
568
+ {
569
+ "url": "http://api2.example.com/swagger.json",
570
+ "apiListFileName": "api2.ts",
571
+ "publicPrefix": "/api/v2",
572
+ "dataLevel": "data",
573
+ "headers": {
574
+ "Authorization": "Bearer token2"
575
+ }
576
+ }
577
+ ]
578
+ }
579
+ ```
580
+
581
+ **Exemple de configuration (ancien format) :**
582
+
377
583
  ```json
378
584
  {
379
585
  "swaggerServers": [
@@ -422,10 +628,12 @@ Toutes les méthodes prennent en charge les définitions de types sécurisées p
422
628
 
423
629
  1. Assurez-vous que l'adresse du document Swagger JSON est accessible
424
630
  2. Les chemins dans le fichier de configuration doivent être relatifs au répertoire racine du projet
425
- 3. Les fichiers générés écraseront les fichiers existants du même nom
631
+ 3. Les fichiers générés écraseront les fichiers existants du même nom (mais `config.ts`, `error-message.ts`, `fetch.ts`, `api-type.d.ts` ne seront pas écrasés s'ils existent déjà)
426
632
  4. Il est recommandé d'ajouter les fichiers générés au contrôle de version
427
633
  5. Lors de l'utilisation de plusieurs serveurs Swagger, assurez-vous que le `apiListFileName` de chaque serveur est unique pour éviter l'écrasement des fichiers
428
634
  6. Lors de la configuration de plusieurs serveurs, les définitions de types et les enum seront fusionnées, si différents serveurs ont des types du même nom, des conflits peuvent survenir
635
+ 7. La configuration au niveau du serveur (`dataLevel`, `parameterSeparator`, `includeInterface`, `excludeInterface`, `pathPrefix`) remplacera la configuration globale
636
+ 8. `includeInterface` et `excludeInterface` ne peuvent pas être configurés simultanément. Si les deux sont configurés, `includeInterface` sera prioritaire
429
637
 
430
638
  ### Problèmes courants
431
639
 
@@ -437,6 +645,116 @@ Toutes les méthodes prennent en charge les définitions de types sécurisées p
437
645
  - Vérifiez que la configuration requestMethodsImportPath est correcte
438
646
  - Confirmez l'existence du fichier de méthodes de requête
439
647
 
648
+ 3. **Quand utiliser `pathPrefix` ?**
649
+ - Lorsque votre API doit être accessible via un proxy inverse ou une passerelle
650
+ - Par exemple : Swagger définit `/api/user`, mais la requête réelle doit être `/gateway/api/user`
651
+ - Il suffit de définir `pathPrefix: "/gateway"`
652
+
653
+ 4. **Quelle est la différence entre `publicPrefix` et `pathPrefix` ?**
654
+ - `publicPrefix` : Supprime le préfixe du chemin d'interface, n'affecte que le nom de fonction généré
655
+ - Par exemple : `/api/user/list` après suppression de `/api`, le nom de fonction est `userListGet`
656
+ - `pathPrefix` : Ajoute un préfixe devant le chemin de requête, affecte l'URL de requête réelle
657
+ - Par exemple : `/api/user/list` après ajout de `/forward`, l'URL de requête est `/forward/api/user/list`
658
+
659
+ 5. **Comment configurer différents `dataLevel` pour plusieurs serveurs ?**
660
+
661
+ ```json
662
+ {
663
+ "dataLevel": "serve",
664
+ "swaggerServers": [
665
+ {
666
+ "url": "http://old-api.com/swagger.json",
667
+ "dataLevel": "axios",
668
+ "apiListFileName": "old-api.ts"
669
+ },
670
+ {
671
+ "url": "http://new-api.com/swagger.json",
672
+ "apiListFileName": "new-api.ts"
673
+ }
674
+ ]
675
+ }
676
+ ```
677
+
678
+ - `old-api.ts` utilise `dataLevel: "axios"`
679
+ - `new-api.ts` utilise le `dataLevel: "serve"` global
680
+
681
+ 6. **Comment générer seulement des interfaces partielles ?**
682
+ - Utilisez la configuration `includeInterface` :
683
+ ```json
684
+ {
685
+ "swaggerServers": [
686
+ {
687
+ "url": "http://api.com/swagger.json",
688
+ "includeInterface": [
689
+ { "path": "/api/user", "method": "get" },
690
+ { "path": "/api/user/{id}", "method": "post" }
691
+ ]
692
+ }
693
+ ]
694
+ }
695
+ ```
696
+ - Ou utilisez `excludeInterface` pour exclure les interfaces non désirées
697
+
698
+ 7. **Que faire si les fichiers générés ont été écrasés ?**
699
+ - Les fichiers `config.ts`, `error-message.ts`, `fetch.ts`, `api-type.d.ts` ne sont générés que la première fois s'ils n'existent pas
700
+ - Les fichiers de liste API et les fichiers de types sont régénérés à chaque fois
701
+ - Il est recommandé d'inclure les fichiers générés dans le contrôle de version pour faciliter la révision des modifications
702
+
703
+ 3. **Quand utiliser `pathPrefix` ?**
704
+ - Lorsque votre API doit être accessible via un proxy inverse ou une passerelle
705
+ - Par exemple : Swagger définit `/api/user`, mais la requête réelle doit être `/gateway/api/user`
706
+ - Il suffit de définir `pathPrefix: "/gateway"`
707
+
708
+ 4. **Quelle est la différence entre `publicPrefix` et `pathPrefix` ?**
709
+ - `publicPrefix` : Supprime le préfixe du chemin d'interface, n'affecte que le nom de fonction généré
710
+ - Par exemple : `/api/user/list` après suppression de `/api`, le nom de fonction est `userListGet`
711
+ - `pathPrefix` : Ajoute un préfixe devant le chemin de requête, affecte l'URL de requête réelle
712
+ - Par exemple : `/api/user/list` après ajout de `/forward`, l'URL de requête est `/forward/api/user/list`
713
+
714
+ 5. **Comment configurer différents `dataLevel` pour plusieurs serveurs ?**
715
+
716
+ ```json
717
+ {
718
+ "dataLevel": "serve",
719
+ "swaggerServers": [
720
+ {
721
+ "url": "http://old-api.com/swagger.json",
722
+ "dataLevel": "axios",
723
+ "apiListFileName": "old-api.ts"
724
+ },
725
+ {
726
+ "url": "http://new-api.com/swagger.json",
727
+ "apiListFileName": "new-api.ts"
728
+ }
729
+ ]
730
+ }
731
+ ```
732
+
733
+ - `old-api.ts` utilise `dataLevel: "axios"`
734
+ - `new-api.ts` utilise le `dataLevel: "serve"` global
735
+
736
+ 6. **Comment générer seulement des interfaces partielles ?**
737
+ - Utilisez la configuration `includeInterface` :
738
+ ```json
739
+ {
740
+ "swaggerServers": [
741
+ {
742
+ "url": "http://api.com/swagger.json",
743
+ "includeInterface": [
744
+ { "path": "/api/user", "method": "get" },
745
+ { "path": "/api/user/{id}", "method": "post" }
746
+ ]
747
+ }
748
+ ]
749
+ }
750
+ ```
751
+ - Ou utilisez `excludeInterface` pour exclure les interfaces non désirées
752
+
753
+ 7. **Que faire si les fichiers générés ont été écrasés ?**
754
+ - Les fichiers `config.ts`, `error-message.ts`, `fetch.ts`, `api-type.d.ts` ne sont générés que la première fois s'ils n'existent pas
755
+ - Les fichiers de liste API et les fichiers de types sont régénérés à chaque fois
756
+ - Il est recommandé d'inclure les fichiers générés dans le contrôle de version pour faciliter la révision des modifications
757
+
440
758
  # Guide d'utilisation de la commande `anl lint`
441
759
 
442
760
  > Fournit une fonctionnalité de configuration en un clic pour divers outils lint de projets frontend, incluant :