anl 25.1203.0 → 26.105.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.ar.md +142 -24
- package/README.es.md +142 -24
- package/README.fr.md +142 -24
- package/README.jp.md +142 -24
- package/README.md +142 -24
- package/README.ru.md +142 -24
- package/README.zh.md +142 -24
- package/lib/ajax-config/error-message.ts +0 -6
- package/lib/ajax-config/fetch.ts +74 -1
- package/lib/git-local-config/.commit-type.cjs +0 -1
- package/lib/package.json.js +1 -1
- package/lib/src/build-type/core/components.js +1 -1
- package/lib/src/build-type/core/get-data.js +1 -1
- package/lib/src/build-type/core/path.js +1 -1
- package/lib/src/build-type/index.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
- 🎨 Supports code formatting
|
|
22
22
|
- ⚡️ Supports file upload
|
|
23
23
|
- 🛠 Configurable code generation options
|
|
24
|
+
- 🌐 Supports multiple Swagger server configurations
|
|
25
|
+
- 🔧 Supports HTTP methods like OPTIONS, HEAD, SEARCH
|
|
24
26
|
|
|
25
27
|
- `anl lint`
|
|
26
28
|
- 🔍 One-click configuration for various lint tools
|
|
@@ -94,13 +96,20 @@ $ anl type
|
|
|
94
96
|
|
|
95
97
|
#### Configuration File Example
|
|
96
98
|
|
|
99
|
+
**Single Swagger Server Configuration:**
|
|
100
|
+
|
|
97
101
|
```json
|
|
98
102
|
{
|
|
99
103
|
"saveTypeFolderPath": "apps/types",
|
|
100
104
|
"saveApiListFolderPath": "apps/api/",
|
|
101
105
|
"saveEnumFolderPath": "apps/enums",
|
|
102
106
|
"importEnumPath": "../../enums",
|
|
103
|
-
"
|
|
107
|
+
"swaggerServers": {
|
|
108
|
+
"url": "https://generator3.swagger.io/openapi2.json",
|
|
109
|
+
"apiListFileName": "index.ts",
|
|
110
|
+
"publicPrefix": "api",
|
|
111
|
+
"headers": {}
|
|
112
|
+
},
|
|
104
113
|
"requestMethodsImportPath": "./fetch",
|
|
105
114
|
"dataLevel": "serve",
|
|
106
115
|
"formatting": {
|
|
@@ -120,30 +129,77 @@ $ anl type
|
|
|
120
129
|
"method": "post"
|
|
121
130
|
}
|
|
122
131
|
],
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
|
|
132
|
+
"parameterSeparator": "_",
|
|
133
|
+
"enmuConfig": {
|
|
134
|
+
"erasableSyntaxOnly": false,
|
|
135
|
+
"varnames": "enum-varnames",
|
|
136
|
+
"comment": "enum-descriptions"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Multiple Swagger Servers Configuration:**
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"saveTypeFolderPath": "apps/types",
|
|
146
|
+
"saveApiListFolderPath": "apps/api/",
|
|
147
|
+
"saveEnumFolderPath": "apps/enums",
|
|
148
|
+
"importEnumPath": "../../enums",
|
|
149
|
+
"requestMethodsImportPath": "./fetch",
|
|
150
|
+
"dataLevel": "serve",
|
|
151
|
+
"formatting": {
|
|
152
|
+
"indentation": "\t",
|
|
153
|
+
"lineEnding": "\n"
|
|
154
|
+
},
|
|
155
|
+
"parameterSeparator": "_",
|
|
156
|
+
"enmuConfig": {
|
|
157
|
+
"erasableSyntaxOnly": false,
|
|
158
|
+
"varnames": "enum-varnames",
|
|
159
|
+
"comment": "enum-descriptions"
|
|
160
|
+
},
|
|
161
|
+
"swaggerServers": [
|
|
162
|
+
{
|
|
163
|
+
"url": "https://generator3.swagger.io/openapi1.json",
|
|
164
|
+
"apiListFileName": "op.ts",
|
|
165
|
+
"headers": {}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"url": "https://generator3.swagger.io/openapi2.json",
|
|
169
|
+
"apiListFileName": "index.ts",
|
|
170
|
+
"publicPrefix": "/api",
|
|
171
|
+
"headers": {}
|
|
172
|
+
}
|
|
173
|
+
]
|
|
126
174
|
}
|
|
127
175
|
```
|
|
128
176
|
|
|
129
177
|
#### Configuration Item Descriptions
|
|
130
178
|
|
|
131
|
-
| Configuration Item
|
|
132
|
-
|
|
|
133
|
-
| saveTypeFolderPath
|
|
134
|
-
| saveApiListFolderPath
|
|
135
|
-
| saveEnumFolderPath
|
|
136
|
-
| importEnumPath
|
|
137
|
-
| swaggerJsonUrl
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
179
|
+
| Configuration Item | Type | Required | Description |
|
|
180
|
+
| -------------------------------------------- | ------------------------------------- | -------- | ------------------------------------------------------------------- |
|
|
181
|
+
| saveTypeFolderPath | string | Yes | Type definition file save path |
|
|
182
|
+
| saveApiListFolderPath | string | Yes | API request function file save path |
|
|
183
|
+
| saveEnumFolderPath | string | Yes | Enum data file save path |
|
|
184
|
+
| importEnumPath | string | Yes | Enum import path (path referenced by enum files in apps/types/models/\*.ts) |
|
|
185
|
+
| swaggerJsonUrl | string | No | Swagger JSON documentation address (migrated to `swaggerServers`, retained for backward compatibility) **This field will be removed in future versions** |
|
|
186
|
+
| swaggerServers | object \| Array<object> | No | Swagger server configuration. Single server can be an object, multiple servers use an array. Each server can configure `url`, `publicPrefix`, `apiListFileName`, `headers`<br />See single and multiple Swagger server configuration examples above |
|
|
187
|
+
| swaggerServers[].url | string | Yes | Swagger JSON documentation address |
|
|
188
|
+
| swaggerServers[].publicPrefix | string | No | Common prefix on url path, e.g.: api/users, api/users/{id}, api is the common prefix |
|
|
189
|
+
| swaggerServers[].apiListFileName | string | No | API list file name, defaults to `index.ts`. When using multiple servers, each server's file name must be unique |
|
|
190
|
+
| swaggerServers[].headers | object | No | Request header configuration |
|
|
191
|
+
| requestMethodsImportPath | string | Yes | Request method import path |
|
|
192
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | Yes | Interface return data level |
|
|
193
|
+
| formatting | object | No | Code formatting configuration |
|
|
194
|
+
| headers | object | No | Request header configuration (migrated to `swaggerServers`, retained for backward compatibility) |
|
|
195
|
+
| includeInterface | Array<{path: string, method: string}> | No | Included interfaces: The interface list file specified by `saveApiListFolderPath` will only include interfaces in the list, mutually exclusive with `excludeInterface` field |
|
|
196
|
+
| excludeInterface | Array<{path: string, method: string}> | No | Excluded interfaces: The interface list file specified by `saveApiListFolderPath` will not include interfaces in this list, mutually exclusive with `includeInterface` |
|
|
197
|
+
| publicPrefix | string | No | Common prefix on url path (migrated to `swaggerServers`, retained for backward compatibility) |
|
|
198
|
+
| apiListFileName | string | No | API list file name, defaults to `index.ts` (migrated to `swaggerServers`, retained for backward compatibility) |
|
|
199
|
+
| enmuConfig.erasableSyntaxOnly | boolean | Yes | Align with tsconfig.json `compilerOptions.erasableSyntaxOnly`. When `true`, generates const objects instead of enums (type-only syntax). Default: `false` |
|
|
200
|
+
| parameterSeparator | string | No | Separator used between path segments and parameters when generating API names and type names. For example, `/users/{userId}/posts` with separator `'_'` generates `users_userId_posts_GET`. Default: `'_'` |
|
|
201
|
+
| enmuConfig.varnames | string | No | Schema field name that stores custom enum member identifiers. Default: `enum-varnames`. |
|
|
202
|
+
| enmuConfig.comment | string | No | Schema field name that stores enum member descriptions (used for inline comments). Default: `enum-descriptions`. |
|
|
147
203
|
|
|
148
204
|
#### Configuration Items and Generated Files Correspondence
|
|
149
205
|
|
|
@@ -156,7 +212,8 @@ project/
|
|
|
156
212
|
│ │ ├── models/ # All type definition files (excluding enum types) uncontrolled
|
|
157
213
|
│ │ ├── connectors/ # API type definitions (interface definition files) uncontrolled
|
|
158
214
|
│ └── api/ # Request files: Specified by saveApiListFolderPath configuration item
|
|
159
|
-
│ │ └── index.ts # API request function list uncontrolled
|
|
215
|
+
│ │ └── index.ts # API request function list (single server or first server) uncontrolled
|
|
216
|
+
│ │ └── op.ts # Other servers' API list files when using multiple servers uncontrolled
|
|
160
217
|
│ │ └── api-type.d.ts # Request type definition file uncontrolled
|
|
161
218
|
│ │ └── config.ts # Request, response interceptor, request configuration uncontrolled
|
|
162
219
|
│ │ └── error-message.ts # System-level error messages uncontrolled
|
|
@@ -205,9 +262,9 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
|
|
|
205
262
|
|
|
206
263
|
#### Enum Generation
|
|
207
264
|
|
|
208
|
-
The tool supports two enum generation modes, controlled by the `erasableSyntaxOnly` configuration:
|
|
265
|
+
The tool supports two enum generation modes, controlled by the `enmuConfig.erasableSyntaxOnly` configuration:
|
|
209
266
|
|
|
210
|
-
**Traditional Enum Mode** (`erasableSyntaxOnly: false`, default):
|
|
267
|
+
**Traditional Enum Mode** (`enmuConfig.erasableSyntaxOnly: false`, default):
|
|
211
268
|
|
|
212
269
|
```typescript
|
|
213
270
|
export enum Status {
|
|
@@ -217,7 +274,7 @@ export enum Status {
|
|
|
217
274
|
}
|
|
218
275
|
```
|
|
219
276
|
|
|
220
|
-
**Const Object Mode** (`erasableSyntaxOnly: true`):
|
|
277
|
+
**Const Object Mode** (`enmuConfig.erasableSyntaxOnly: true`):
|
|
221
278
|
|
|
222
279
|
```typescript
|
|
223
280
|
export const Status = {
|
|
@@ -300,12 +357,73 @@ Example configuration: This configuration is in `an.config.json`
|
|
|
300
357
|
|
|
301
358
|
Note: `includeInterface` and `excludeInterface` cannot be used simultaneously. If both are configured, `includeInterface` will be prioritized.
|
|
302
359
|
|
|
360
|
+
#### Multiple Swagger Servers Support
|
|
361
|
+
|
|
362
|
+
The tool supports configuring multiple Swagger servers, each server can be configured independently:
|
|
363
|
+
|
|
364
|
+
- **Single server**: `swaggerServers` can be directly filled with an object
|
|
365
|
+
- **Multiple servers**: `swaggerServers` uses an array format, each server must configure a unique `apiListFileName`
|
|
366
|
+
|
|
367
|
+
**How it works:**
|
|
368
|
+
|
|
369
|
+
- The first server's APIs will be generated to the specified `apiListFileName` (defaults to `index.ts`)
|
|
370
|
+
- Subsequent servers' APIs will be appended to their respective `apiListFileName` files
|
|
371
|
+
- Type definitions and enums will be merged into a unified folder to avoid duplication
|
|
372
|
+
|
|
373
|
+
**Configuration example:**
|
|
374
|
+
|
|
375
|
+
```json
|
|
376
|
+
{
|
|
377
|
+
"swaggerServers": [
|
|
378
|
+
{
|
|
379
|
+
"url": "http://api1.example.com/swagger.json",
|
|
380
|
+
"apiListFileName": "api1.ts",
|
|
381
|
+
"publicPrefix": "/api/v1",
|
|
382
|
+
"headers": {
|
|
383
|
+
"Authorization": "Bearer token1"
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"url": "http://api2.example.com/swagger.json",
|
|
388
|
+
"apiListFileName": "api2.ts",
|
|
389
|
+
"publicPrefix": "/api/v2",
|
|
390
|
+
"headers": {
|
|
391
|
+
"Authorization": "Bearer token2"
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**Migration notes:**
|
|
399
|
+
|
|
400
|
+
- Old configuration (`swaggerJsonUrl`, `publicPrefix`, `headers`) is still compatible
|
|
401
|
+
- The tool will automatically detect old configuration and suggest migration methods
|
|
402
|
+
- It's recommended to migrate to the new `swaggerServers` configuration for better flexibility
|
|
403
|
+
|
|
404
|
+
#### HTTP Method Support
|
|
405
|
+
|
|
406
|
+
The tool supports the following HTTP methods:
|
|
407
|
+
|
|
408
|
+
- `GET` - Get resources
|
|
409
|
+
- `POST` - Create resources
|
|
410
|
+
- `PUT` - Update resources (full replacement)
|
|
411
|
+
- `PATCH` - Update resources (partial update)
|
|
412
|
+
- `DELETE` - Delete resources
|
|
413
|
+
- `OPTIONS` - Preflight requests
|
|
414
|
+
- `HEAD` - Get response headers
|
|
415
|
+
- `SEARCH` - Search requests
|
|
416
|
+
|
|
417
|
+
All methods support type-safe parameter and response type definitions.
|
|
418
|
+
|
|
303
419
|
### Notes
|
|
304
420
|
|
|
305
421
|
1. Ensure the Swagger JSON documentation address is accessible
|
|
306
422
|
2. Paths in the configuration file need to be relative to the project root directory
|
|
307
423
|
3. Generated files will overwrite existing files with the same name
|
|
308
424
|
4. It's recommended to add generated files to version control
|
|
425
|
+
5. When using multiple Swagger servers, ensure each server's `apiListFileName` is unique to avoid file overwriting
|
|
426
|
+
6. When configuring multiple servers, type definitions and enums will be merged. If different servers have types with the same name, conflicts may occur
|
|
309
427
|
|
|
310
428
|
### Common Issues
|
|
311
429
|
|
package/README.ru.md
CHANGED
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
- 🎨 Поддерживает форматирование кода
|
|
22
22
|
- ⚡️ Поддерживает загрузку файлов
|
|
23
23
|
- 🛠 Настраиваемые опции генерации кода
|
|
24
|
+
- 🌐 Поддерживает конфигурации нескольких Swagger серверов
|
|
25
|
+
- 🔧 Поддерживает HTTP методы OPTIONS, HEAD, SEARCH и другие
|
|
24
26
|
|
|
25
27
|
- `anl lint`
|
|
26
28
|
- 🔍 Настройка различных инструментов линтинга в один клик
|
|
@@ -96,13 +98,20 @@ $ anl type
|
|
|
96
98
|
|
|
97
99
|
#### Пример конфигурационного файла
|
|
98
100
|
|
|
101
|
+
**Конфигурация одного Swagger сервера:**
|
|
102
|
+
|
|
99
103
|
```json
|
|
100
104
|
{
|
|
101
105
|
"saveTypeFolderPath": "apps/types",
|
|
102
106
|
"saveApiListFolderPath": "apps/api/",
|
|
103
107
|
"saveEnumFolderPath": "apps/enums",
|
|
104
108
|
"importEnumPath": "../../enums",
|
|
105
|
-
"
|
|
109
|
+
"swaggerServers": {
|
|
110
|
+
"url": "https://generator3.swagger.io/openapi2.json",
|
|
111
|
+
"apiListFileName": "index.ts",
|
|
112
|
+
"publicPrefix": "api",
|
|
113
|
+
"headers": {}
|
|
114
|
+
},
|
|
106
115
|
"requestMethodsImportPath": "./fetch",
|
|
107
116
|
"dataLevel": "serve",
|
|
108
117
|
"formatting": {
|
|
@@ -122,30 +131,77 @@ $ anl type
|
|
|
122
131
|
"method": "post"
|
|
123
132
|
}
|
|
124
133
|
],
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
|
|
134
|
+
"parameterSeparator": "_",
|
|
135
|
+
"enmuConfig": {
|
|
136
|
+
"erasableSyntaxOnly": false,
|
|
137
|
+
"varnames": "enum-varnames",
|
|
138
|
+
"comment": "enum-descriptions"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Конфигурация нескольких Swagger серверов:**
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"saveTypeFolderPath": "apps/types",
|
|
148
|
+
"saveApiListFolderPath": "apps/api/",
|
|
149
|
+
"saveEnumFolderPath": "apps/enums",
|
|
150
|
+
"importEnumPath": "../../enums",
|
|
151
|
+
"requestMethodsImportPath": "./fetch",
|
|
152
|
+
"dataLevel": "serve",
|
|
153
|
+
"formatting": {
|
|
154
|
+
"indentation": "\t",
|
|
155
|
+
"lineEnding": "\n"
|
|
156
|
+
},
|
|
157
|
+
"parameterSeparator": "_",
|
|
158
|
+
"enmuConfig": {
|
|
159
|
+
"erasableSyntaxOnly": false,
|
|
160
|
+
"varnames": "enum-varnames",
|
|
161
|
+
"comment": "enum-descriptions"
|
|
162
|
+
},
|
|
163
|
+
"swaggerServers": [
|
|
164
|
+
{
|
|
165
|
+
"url": "https://generator3.swagger.io/openapi1.json",
|
|
166
|
+
"apiListFileName": "op.ts",
|
|
167
|
+
"headers": {}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"url": "https://generator3.swagger.io/openapi2.json",
|
|
171
|
+
"apiListFileName": "index.ts",
|
|
172
|
+
"publicPrefix": "/api",
|
|
173
|
+
"headers": {}
|
|
174
|
+
}
|
|
175
|
+
]
|
|
128
176
|
}
|
|
129
177
|
```
|
|
130
178
|
|
|
131
179
|
#### Описание элементов конфигурации
|
|
132
180
|
|
|
133
|
-
| Элемент конфигурации
|
|
134
|
-
|
|
|
135
|
-
| saveTypeFolderPath
|
|
136
|
-
| saveApiListFolderPath
|
|
137
|
-
| saveEnumFolderPath
|
|
138
|
-
| importEnumPath
|
|
139
|
-
| swaggerJsonUrl
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
181
|
+
| Элемент конфигурации | Тип | Обязательный | Описание |
|
|
182
|
+
| -------------------------------------------- | ------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
183
|
+
| saveTypeFolderPath | string | Да | Путь сохранения файлов определений типов |
|
|
184
|
+
| saveApiListFolderPath | string | Да | Путь сохранения файлов функций API-запросов |
|
|
185
|
+
| saveEnumFolderPath | string | Да | Путь сохранения файлов данных enum |
|
|
186
|
+
| importEnumPath | string | Да | Путь импорта enum (путь ссылки на файлы enum в apps/types/models/\*.ts) |
|
|
187
|
+
| swaggerJsonUrl | string | Нет | Адрес документа Swagger JSON (мигрировано в `swaggerServers`, сохранено для обратной совместимости) **Это поле будет удалено в будущих версиях** |
|
|
188
|
+
| swaggerServers | object \| Array<object> | Нет | Конфигурация Swagger сервера. Один сервер может быть объектом, несколько серверов используют массив. Каждый сервер может настроить `url`, `publicPrefix`, `apiListFileName`, `headers`<br />См. примеры конфигурации одного и нескольких Swagger серверов выше |
|
|
189
|
+
| swaggerServers[].url | string | Да | Адрес документа Swagger JSON |
|
|
190
|
+
| swaggerServers[].publicPrefix | string | Нет | Общий префикс на url path, например: api/users、api/users/{id} ,api является общим префиксом |
|
|
191
|
+
| swaggerServers[].apiListFileName | string | Нет | Имя файла списка API, по умолчанию `index.ts`. При использовании нескольких серверов имя файла каждого сервера должно быть уникальным |
|
|
192
|
+
| swaggerServers[].headers | object | Нет | Конфигурация заголовков запроса |
|
|
193
|
+
| requestMethodsImportPath | string | Да | Путь импорта методов запросов |
|
|
194
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | Да | Уровень данных возврата интерфейса |
|
|
195
|
+
| formatting | object | Нет | Конфигурация форматирования кода |
|
|
196
|
+
| headers | object | Нет | Конфигурация заголовков запроса (мигрировано в `swaggerServers`, сохранено для обратной совместимости) |
|
|
197
|
+
| includeInterface | Array<{path: string, method: string}> | Нет | Включаемые интерфейсы: файл списка интерфейсов, указанный `saveApiListFolderPath`, будет включать только интерфейсы из списка, взаимоисключающий с полем `excludeInterface` |
|
|
198
|
+
| excludeInterface | Array<{path: string, method: string}> | Нет | Исключаемые интерфейсы: файл списка интерфейсов, указанный `saveApiListFolderPath`, не будет содержать интерфейсы из этого списка, взаимоисключающий с `includeInterface` |
|
|
199
|
+
| publicPrefix | string | Нет | Общий префикс на url path (мигрировано в `swaggerServers`, сохранено для обратной совместимости) |
|
|
200
|
+
| apiListFileName | string | Нет | Имя файла списка API, по умолчанию `index.ts` (мигрировано в `swaggerServers`, сохранено для обратной совместимости) |
|
|
201
|
+
| enmuConfig.erasableSyntaxOnly | boolean | Да | Соответствует опции `compilerOptions.erasableSyntaxOnly` в tsconfig.json. При значении `true` генерируется const объект вместо enum (только типовый синтаксис). Значение по умолчанию: `false` |
|
|
202
|
+
| parameterSeparator | string | Нет | Разделитель между сегментами пути и параметрами при генерации имен API и имен типов. Например, `/users/{userId}/posts` с разделителем `'_'` генерирует `users_userId_posts_GET`. Значение по умолчанию: `'_'` |
|
|
203
|
+
| enmuConfig.varnames | string | Нет | Имя поля в схеме Swagger, в котором находятся пользовательские имена элементов enum. Значение по умолчанию: `enum-varnames`. |
|
|
204
|
+
| enmuConfig.comment | string | Нет | Имя поля в схеме Swagger, содержащее описания элементов enum (используется для генерации комментариев). Значение по умолчанию: `enum-descriptions`. |
|
|
149
205
|
|
|
150
206
|
#### Соответствие элементов конфигурации и генерируемых файлов
|
|
151
207
|
|
|
@@ -158,7 +214,8 @@ project/
|
|
|
158
214
|
│ │ ├── models/ # Все файлы определений типов (не включая типы enum) неконтролируемые
|
|
159
215
|
│ │ ├── connectors/ # Определения типов API (файлы определений интерфейсов) неконтролируемые
|
|
160
216
|
│ └── api/ # Файлы запросов: указывается элементом конфигурации saveApiListFolderPath
|
|
161
|
-
│ │ └── index.ts # Список функций API-запросов неконтролируемый
|
|
217
|
+
│ │ └── index.ts # Список функций API-запросов (один сервер или первый сервер) неконтролируемый
|
|
218
|
+
│ │ └── op.ts # Файлы списка API других серверов при использовании нескольких серверов неконтролируемые
|
|
162
219
|
│ │ └── api-type.d.ts # Файл определений типов запросов неконтролируемый
|
|
163
220
|
│ │ └── config.ts # Конфигурация запросов, перехватчиков ответов, конфигурация запросов неконтролируемая
|
|
164
221
|
│ │ └── error-message.ts # Системные сообщения об ошибках неконтролируемые
|
|
@@ -207,9 +264,9 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
|
|
|
207
264
|
|
|
208
265
|
#### Генерация enum
|
|
209
266
|
|
|
210
|
-
Инструмент поддерживает два режима генерации enum, контролируемые через конфигурацию `erasableSyntaxOnly`:
|
|
267
|
+
Инструмент поддерживает два режима генерации enum, контролируемые через конфигурацию `enmuConfig.erasableSyntaxOnly`:
|
|
211
268
|
|
|
212
|
-
**Традиционный режим enum** (`erasableSyntaxOnly: false`, значение по умолчанию):
|
|
269
|
+
**Традиционный режим enum** (`enmuConfig.erasableSyntaxOnly: false`, значение по умолчанию):
|
|
213
270
|
|
|
214
271
|
```typescript
|
|
215
272
|
export enum Status {
|
|
@@ -219,7 +276,7 @@ export enum Status {
|
|
|
219
276
|
}
|
|
220
277
|
```
|
|
221
278
|
|
|
222
|
-
**Режим константного объекта** (`erasableSyntaxOnly: true`):
|
|
279
|
+
**Режим константного объекта** (`enmuConfig.erasableSyntaxOnly: true`):
|
|
223
280
|
|
|
224
281
|
```typescript
|
|
225
282
|
export const Status = {
|
|
@@ -302,12 +359,73 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
302
359
|
|
|
303
360
|
Примечание: `includeInterface` и `excludeInterface` нельзя использовать одновременно, если они настроены одновременно, будет приоритетно использоваться `includeInterface`.
|
|
304
361
|
|
|
362
|
+
#### Поддержка нескольких Swagger серверов
|
|
363
|
+
|
|
364
|
+
Инструмент поддерживает конфигурацию нескольких Swagger серверов, каждый сервер может быть настроен независимо:
|
|
365
|
+
|
|
366
|
+
- **Один сервер**: `swaggerServers` может быть напрямую заполнен объектом
|
|
367
|
+
- **Несколько серверов**: `swaggerServers` использует формат массива, каждый сервер должен настроить уникальный `apiListFileName`
|
|
368
|
+
|
|
369
|
+
**Как это работает:**
|
|
370
|
+
|
|
371
|
+
- API первого сервера будут сгенерированы в указанный `apiListFileName` (по умолчанию `index.ts`)
|
|
372
|
+
- API последующих серверов будут добавлены в их соответствующие файлы `apiListFileName`
|
|
373
|
+
- Определения типов и enum будут объединены в единую папку, чтобы избежать дублирования
|
|
374
|
+
|
|
375
|
+
**Пример конфигурации:**
|
|
376
|
+
|
|
377
|
+
```json
|
|
378
|
+
{
|
|
379
|
+
"swaggerServers": [
|
|
380
|
+
{
|
|
381
|
+
"url": "http://api1.example.com/swagger.json",
|
|
382
|
+
"apiListFileName": "api1.ts",
|
|
383
|
+
"publicPrefix": "/api/v1",
|
|
384
|
+
"headers": {
|
|
385
|
+
"Authorization": "Bearer token1"
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"url": "http://api2.example.com/swagger.json",
|
|
390
|
+
"apiListFileName": "api2.ts",
|
|
391
|
+
"publicPrefix": "/api/v2",
|
|
392
|
+
"headers": {
|
|
393
|
+
"Authorization": "Bearer token2"
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
]
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Примечания по миграции:**
|
|
401
|
+
|
|
402
|
+
- Старая конфигурация (`swaggerJsonUrl`, `publicPrefix`, `headers`) все еще совместима
|
|
403
|
+
- Инструмент автоматически обнаружит старую конфигурацию и предложит способы миграции
|
|
404
|
+
- Рекомендуется мигрировать на новую конфигурацию `swaggerServers` для большей гибкости
|
|
405
|
+
|
|
406
|
+
#### Поддержка HTTP методов
|
|
407
|
+
|
|
408
|
+
Инструмент поддерживает следующие HTTP методы:
|
|
409
|
+
|
|
410
|
+
- `GET` - Получение ресурсов
|
|
411
|
+
- `POST` - Создание ресурсов
|
|
412
|
+
- `PUT` - Обновление ресурсов (полная замена)
|
|
413
|
+
- `PATCH` - Обновление ресурсов (частичное обновление)
|
|
414
|
+
- `DELETE` - Удаление ресурсов
|
|
415
|
+
- `OPTIONS` - Предварительные запросы
|
|
416
|
+
- `HEAD` - Получение заголовков ответа
|
|
417
|
+
- `SEARCH` - Поисковые запросы
|
|
418
|
+
|
|
419
|
+
Все методы поддерживают типобезопасные определения типов параметров и ответов.
|
|
420
|
+
|
|
305
421
|
### Меры предосторожности
|
|
306
422
|
|
|
307
423
|
1. Убедитесь, что адрес документа Swagger JSON доступен
|
|
308
424
|
2. Пути в файле конфигурации должны быть относительными путями к корневой директории проекта
|
|
309
425
|
3. Генерируемые файлы будут перезаписывать существующие файлы с тем же именем
|
|
310
426
|
4. Рекомендуется добавлять генерируемые файлы в систему контроля версий
|
|
427
|
+
5. При использовании нескольких Swagger серверов убедитесь, что `apiListFileName` каждого сервера уникален, чтобы избежать перезаписи файлов
|
|
428
|
+
6. При конфигурации нескольких серверов определения типов и enum будут объединены. Если разные серверы имеют типы с одинаковыми именами, могут возникнуть конфликты
|
|
311
429
|
|
|
312
430
|
### Часто задаваемые вопросы
|
|
313
431
|
|