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.ar.md +300 -37
- package/README.es.md +299 -36
- package/README.fr.md +354 -36
- package/README.jp.md +246 -15
- package/README.md +262 -29
- package/README.ru.md +246 -15
- package/README.zh.md +289 -50
- package/lib/package.json.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 +1 -1
- package/lib/data/openapi.json.js +0 -1
package/README.ar.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
|
-
"
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
"
|
|
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 | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
|
|
187
195
|
| swaggerJsonUrl | string | لا | عنوان مستند Swagger JSON (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) **سيتم حذف هذا الحقل في الإصدارات التالية** |
|
|
188
196
|
| swaggerServers | object \| Array<object> | لا | تكوين خادم Swagger. يمكن ملء خادم واحد مباشرة ككائن، أو استخدام مصفوفة لخوادم متعددة. يمكن تكوين `url` و `publicPrefix` و `apiListFileName` و `headers` لكل خادم<br />يتوافق هذا الحقل مع أمثلة تكوين خادم Swagger الواحد وتكوين خوادم Swagger المتعددة، يرجى التمرير لأعلى للعرض |
|
|
189
|
-
| swaggerServers[].url
|
|
190
|
-
| swaggerServers[].publicPrefix
|
|
191
|
-
| swaggerServers[].
|
|
192
|
-
| swaggerServers[].
|
|
193
|
-
|
|
|
194
|
-
| dataLevel
|
|
195
|
-
|
|
|
197
|
+
| swaggerServers[].url | string | نعم | عنوان مستند Swagger JSON |
|
|
198
|
+
| swaggerServers[].publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
|
|
199
|
+
| swaggerServers[].pathPrefix | string | لا | بادئة مسار الطلب (يمكن فهمها كاسم وحدة)، سيتم إضافتها تلقائيًا أمام كل مسار طلب API.<br />على سبيل المثال: عندما `pathPrefix: "/forward"`، <br />`/publicPrefix/pathPrefix/user` سيصبح `/api/forward/user` |
|
|
200
|
+
| swaggerServers[].apiListFileName | string | لا | اسم ملف قائمة API، الافتراضي هو `index.ts`. عند استخدام خوادم متعددة، يجب أن يكون اسم الملف لكل خادم فريدًا |
|
|
201
|
+
| swaggerServers[].headers | object | لا | تكوين رأس طلب هذا الخادم |
|
|
202
|
+
| swaggerServers[].dataLevel | 'data' \| 'serve' \| 'axios' | لا | مستوى بيانات إرجاع واجهة هذا الخادم. إذا لم يتم تعيينه، يتم استخدام تكوين `dataLevel` العام |
|
|
203
|
+
| swaggerServers[].parameterSeparator | '$' \| '\_' | لا | الفاصل المستخدم عند إنشاء أسماء API وأسماء الأنواع لهذا الخادم. إذا لم يتم تعيينه، يتم استخدام تكوين `parameterSeparator` العام |
|
|
204
|
+
| swaggerServers[].includeInterface | Array<{path: string, method: string}> | لا | قائمة الواجهات المضمنة في هذا الخادم. إذا لم يتم تعيينها، يتم استخدام تكوين `includeInterface` العام |
|
|
205
|
+
| swaggerServers[].excludeInterface | Array<{path: string, method: string}> | لا | قائمة الواجهات المستبعدة في هذا الخادم. إذا لم يتم تعيينها، يتم استخدام تكوين `excludeInterface` العام |
|
|
206
|
+
| requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
|
|
207
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | لا | تكوين مستوى بيانات إرجاع الواجهة العامة، القيمة الافتراضية: `'serve'`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
|
|
208
|
+
| formatting | object | لا | تكوين تنسيق الكود |
|
|
209
|
+
| formatting.indentation | string | لا | حرف مسافة بادئة الكود، على سبيل المثال: `"\t"` أو `" "` (مسافتان) |
|
|
210
|
+
| formatting.lineEnding | string | لا | حرف سطر جديد، على سبيل المثال: `"\n"` (LF) أو `"\r\n"` (CRLF) |
|
|
196
211
|
| headers | object | لا | تكوين رأس الطلب (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
|
|
197
|
-
| includeInterface
|
|
198
|
-
| excludeInterface
|
|
199
|
-
| publicPrefix
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
| enmuConfig.
|
|
204
|
-
| enmuConfig.
|
|
212
|
+
| includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة عالميًا: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
|
|
213
|
+
| excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة عالميًا: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
|
|
214
|
+
| publicPrefix | string | لا | البادئة العامة على مسار url عالميًا (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
|
|
215
|
+
| pathPrefix | string | لا | بادئة مسار الطلب العامة (يمكن لكل خادم تكوينه بشكل منفصل للتجاوز) |
|
|
216
|
+
| apiListFileName | string | لا | اسم ملف قائمة API العامة، الافتراضي هو `index.ts` (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
|
|
217
|
+
| enmuConfig | object | نعم | كائن تكوين التعداد |
|
|
218
|
+
| enmuConfig.erasableSyntaxOnly | boolean | نعم | يتوافق مع خيار `compilerOptions.erasableSyntaxOnly` في tsconfig.json. عندما يكون `true`، يتم إنشاء كائن const بدلاً من enum (صيغة النوع فقط). القيمة الافتراضية: `false` |
|
|
219
|
+
| enmuConfig.varnames | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أسماء عناصر التعداد المخصصة. القيمة الافتراضية: `enum-varnames`. |
|
|
220
|
+
| enmuConfig.comment | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أوصاف عناصر التعداد (يُستخدم لإنشاء التعليقات). القيمة الافتراضية: `enum-descriptions`. |
|
|
221
|
+
| parameterSeparator | '$' \| '\_' | لا | الفاصل المستخدم بين أجزاء المسار والمعاملات عالميًا عند إنشاء أسماء API وأسماء الأنواع. على سبيل المثال، `/users/{userId}/posts` مع الفاصل `'_'` ينشئ `users_userId_posts_GET`. القيمة الافتراضية: `'_'`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
|
|
205
222
|
|
|
206
223
|
#### العلاقة بين عناصر التكوين والملفات المولدة
|
|
207
224
|
|
|
@@ -255,6 +272,48 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
|
|
|
255
272
|
|
|
256
273
|
### شرح الميزات
|
|
257
274
|
|
|
275
|
+
#### أولوية التكوين
|
|
276
|
+
|
|
277
|
+
تدعم الأداة التكوين العام والتكوين على مستوى الخادم، وتتبع قواعد الأولوية التالية:
|
|
278
|
+
|
|
279
|
+
**الأولوية: تكوين مستوى الخادم > التكوين العام > القيم الافتراضية**
|
|
280
|
+
|
|
281
|
+
عناصر التكوين التالية تدعم تجاوز التكوين العام على مستوى الخادم:
|
|
282
|
+
|
|
283
|
+
- `dataLevel`: مستوى بيانات إرجاع الواجهة
|
|
284
|
+
- `parameterSeparator`: الفاصل لأسماء API وأسماء الأنواع
|
|
285
|
+
- `includeInterface`: قائمة الواجهات المضمنة
|
|
286
|
+
- `excludeInterface`: قائمة الواجهات المستبعدة
|
|
287
|
+
- `pathPrefix`: بادئة مسار الطلب
|
|
288
|
+
- `publicPrefix`: البادئة العامة لـ URL
|
|
289
|
+
- `headers`: تكوين رأس الطلب
|
|
290
|
+
|
|
291
|
+
**مثال:**
|
|
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
|
+
في التكوين أعلاه:
|
|
312
|
+
|
|
313
|
+
- يستخدم `api1.ts` `dataLevel: "data"` (تكوين مستوى الخادم)
|
|
314
|
+
- يستخدم `api2.ts` `dataLevel: "serve"` (التكوين العام)
|
|
315
|
+
- يستخدم كلا الخادمين `parameterSeparator: "_"` (التكوين العام)
|
|
316
|
+
|
|
258
317
|
#### تحليل الأنواع
|
|
259
318
|
|
|
260
319
|
- يدعم جميع أنواع البيانات في مواصفات OpenAPI 3.0
|
|
@@ -305,6 +364,46 @@ interface User {
|
|
|
305
364
|
}
|
|
306
365
|
```
|
|
307
366
|
|
|
367
|
+
#### تكوين مستوى البيانات (dataLevel)
|
|
368
|
+
|
|
369
|
+
يُستخدم `dataLevel` لتكوين مستوى استخراج البيانات المرتجعة من الواجهة، ويدعم ثلاثة خيارات:
|
|
370
|
+
|
|
371
|
+
1. **`'serve'` (القيمة الافتراضية)**: استخراج حقل `data` المرتجع من الخادم
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
// إرجاع الخادم: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
375
|
+
// إرجاع الدالة: { id: 1, name: 'user' }
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
2. **`'data'`**: استخراج حقل `data.data` (مناسب لسيناريوهات data المتداخلة)
|
|
379
|
+
|
|
380
|
+
```typescript
|
|
381
|
+
// إرجاع الخادم: { data: { code: 200, data: { id: 1, name: 'user' } } }
|
|
382
|
+
// إرجاع الدالة: { id: 1, name: 'user' }
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
3. **`'axios'`**: إرجاع كائن استجابة axios الكامل
|
|
386
|
+
```typescript
|
|
387
|
+
// إرجاع الخادم: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
388
|
+
// إرجاع الدالة: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**مثال على التكوين:**
|
|
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
|
+
> **ملاحظة**: تكوين `dataLevel` على مستوى الخادم سيتجاوز التكوين العام.
|
|
406
|
+
|
|
308
407
|
#### تحميل الملفات
|
|
309
408
|
|
|
310
409
|
عند اكتشاف نوع تحميل ملف، سيتم إضافة رأس الطلب المقابل تلقائيًا:
|
|
@@ -316,6 +415,33 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
316
415
|
});
|
|
317
416
|
```
|
|
318
417
|
|
|
418
|
+
#### تنسيق الكود
|
|
419
|
+
|
|
420
|
+
تدعم الأداة خيارات تنسيق كود مخصصة، يتم التحكم فيها من خلال تكوين `formatting`:
|
|
421
|
+
|
|
422
|
+
**مثال على التكوين:**
|
|
423
|
+
|
|
424
|
+
```json
|
|
425
|
+
{
|
|
426
|
+
"formatting": {
|
|
427
|
+
"indentation": "\t",
|
|
428
|
+
"lineEnding": "\n"
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**شرح التكوين:**
|
|
434
|
+
|
|
435
|
+
- `indentation`: حرف مسافة بادئة الكود
|
|
436
|
+
- `"\t"`: استخدام مسافة بادئة Tab (افتراضي)
|
|
437
|
+
- `" "`: استخدام مسافة بادئة بمسافتين
|
|
438
|
+
- `" "`: استخدام مسافة بادئة بأربع مسافات
|
|
439
|
+
- `lineEnding`: نوع حرف السطر الجديد
|
|
440
|
+
- `"\n"`: LF (نمط Linux/macOS، موصى به)
|
|
441
|
+
- `"\r\n"`: CRLF (نمط Windows)
|
|
442
|
+
|
|
443
|
+
**ملاحظة:** إذا تم تكوين Prettier في المشروع، سيتم تنسيق الكود المولد تلقائيًا باستخدام Prettier، وقد يتم تجاوز تكوين `formatting` بواسطة Prettier.
|
|
444
|
+
|
|
319
445
|
#### معالجة الأخطاء
|
|
320
446
|
|
|
321
447
|
تحتوي الأداة على آلية معالجة أخطاء كاملة:
|
|
@@ -372,8 +498,88 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
372
498
|
- يتم إلحاق API للخوادم اللاحقة بملفات `apiListFileName` الخاصة بها
|
|
373
499
|
- يتم دمج تعريفات الأنواع والتعدادات في مجلد موحد لتجنب التكرار
|
|
374
500
|
|
|
501
|
+
**تكوين على مستوى الخادم:**
|
|
502
|
+
|
|
503
|
+
كل خادم يدعم تكوينًا مستقلاً للخيارات التالية، إذا لم يتم تعيينها، يتم استخدام التكوين العام:
|
|
504
|
+
|
|
505
|
+
- `dataLevel` - مستوى بيانات إرجاع الواجهة
|
|
506
|
+
- `parameterSeparator` - الفاصل لأسماء API وأسماء الأنواع
|
|
507
|
+
- `includeInterface` - قائمة الواجهات المضمنة
|
|
508
|
+
- `excludeInterface` - قائمة الواجهات المستبعدة
|
|
509
|
+
- `pathPrefix` - بادئة مسار الطلب
|
|
510
|
+
|
|
511
|
+
#### بادئة المسار (pathPrefix)
|
|
512
|
+
|
|
513
|
+
يُستخدم `pathPrefix` لإضافة بادئة تلقائيًا أمام جميع مسارات طلبات API، وهو مفيد بشكل خاص في السيناريوهات التالية:
|
|
514
|
+
|
|
515
|
+
1. **سيناريو الوكيل العكسي**: عندما يتم توجيه خدمة الخلفية من خلال وكيل عكسي
|
|
516
|
+
2. **بوابة API**: إضافة بادئة بوابة موحدة أمام المسار
|
|
517
|
+
3. **تكوين بيئات متعددة**: استخدام بادئات مسار مختلفة لبيئات مختلفة
|
|
518
|
+
|
|
519
|
+
**مثال على الاستخدام:**
|
|
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
|
+
**التأثير:**
|
|
534
|
+
|
|
535
|
+
المسار `/api/user/list` المحدد في Swagger سيتم توليده كـ:
|
|
536
|
+
|
|
537
|
+
```typescript
|
|
538
|
+
export const apiUserListGet = (params: ApiUserList_GET.Query) => GET<ApiUserList_GET.Response>('/forward/api/user/list', params);
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
**الفرق مع publicPrefix:**
|
|
542
|
+
|
|
543
|
+
- `publicPrefix`: يُستخدم لإزالة البادئة العامة من مسار الواجهة (يؤثر فقط على اسم الدالة المولدة)
|
|
544
|
+
- `pathPrefix`: يُستخدم لإضافة بادئة أمام مسار الطلب الفعلي (يؤثر على URL الطلب في وقت التشغيل)
|
|
545
|
+
|
|
375
546
|
**مثال على التكوين:**
|
|
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
|
+
**مثال على التكوين (التنسيق القديم):**
|
|
582
|
+
|
|
377
583
|
```json
|
|
378
584
|
{
|
|
379
585
|
"swaggerServers": [
|
|
@@ -422,10 +628,12 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
422
628
|
|
|
423
629
|
1. تأكد من إمكانية الوصول إلى عنوان مستند Swagger JSON
|
|
424
630
|
2. يجب أن تكون المسارات في ملف التكوين نسبية إلى الدليل الجذر للمشروع
|
|
425
|
-
3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم
|
|
631
|
+
3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم (لكن `config.ts` و `error-message.ts` و `fetch.ts` و `api-type.d.ts` لن يتم استبدالها إذا كانت موجودة بالفعل)
|
|
426
632
|
4. يُنصح بإضافة الملفات المولدة إلى التحكم في الإصدار
|
|
427
633
|
5. عند استخدام خوادم Swagger متعددة، تأكد من أن `apiListFileName` لكل خادم فريد لتجنب استبدال الملفات
|
|
428
634
|
6. عند تكوين خوادم متعددة، سيتم دمج تعريفات الأنواع والتعدادات، وقد تحدث تعارضات إذا كانت هناك أنواع بنفس الاسم من خوادم مختلفة
|
|
635
|
+
7. تكوين مستوى الخادم (`dataLevel` و `parameterSeparator` و `includeInterface` و `excludeInterface` و `pathPrefix`) سيتجاوز التكوين العام
|
|
636
|
+
8. لا يمكن تكوين `includeInterface` و `excludeInterface` في نفس الوقت، إذا تم تكوينهما معًا، سيتم إعطاء الأولوية لـ `includeInterface`
|
|
429
637
|
|
|
430
638
|
### الأسئلة الشائعة
|
|
431
639
|
|
|
@@ -437,6 +645,61 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
437
645
|
- تحقق من صحة تكوين requestMethodsImportPath
|
|
438
646
|
- تأكد من وجود ملف طريقة الطلب
|
|
439
647
|
|
|
648
|
+
3. **متى تستخدم `pathPrefix`؟**
|
|
649
|
+
- عندما تحتاج واجهة API الخاصة بك إلى الوصول عبر وكيل عكسي أو بوابة
|
|
650
|
+
- على سبيل المثال: المحدد في Swagger هو `/api/user`، لكن الطلب الفعلي يحتاج إلى `/gateway/api/user`
|
|
651
|
+
- ما عليك سوى تعيين `pathPrefix: "/gateway"`
|
|
652
|
+
|
|
653
|
+
4. **ما الفرق بين `publicPrefix` و `pathPrefix`؟**
|
|
654
|
+
- `publicPrefix`: يزيل البادئة من مسار الواجهة، ويؤثر فقط على اسم الدالة المولدة
|
|
655
|
+
- على سبيل المثال: `/api/user/list` بعد إزالة `/api`، يكون اسم الدالة `userListGet`
|
|
656
|
+
- `pathPrefix`: يضيف بادئة أمام مسار الطلب، ويؤثر على URL الطلب الفعلي
|
|
657
|
+
- على سبيل المثال: `/api/user/list` بعد إضافة `/forward`، يكون URL الطلب `/forward/api/user/list`
|
|
658
|
+
|
|
659
|
+
5. **كيفية تكوين `dataLevel` مختلف لخوادم متعددة؟**
|
|
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` `dataLevel: "axios"`
|
|
679
|
+
- يستخدم `new-api.ts` `dataLevel: "serve"` العام
|
|
680
|
+
|
|
681
|
+
6. **كيفية توليد واجهات جزئية فقط؟**
|
|
682
|
+
- استخدم تكوين `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
|
+
- أو استخدم `excludeInterface` لاستبعاد الواجهات غير المطلوبة
|
|
697
|
+
|
|
698
|
+
7. **ماذا تفعل إذا تم استبدال الملفات المولدة؟**
|
|
699
|
+
- الملفات `config.ts` و `error-message.ts` و `fetch.ts` و `api-type.d.ts` تُنشأ فقط عند عدم وجودها لأول مرة
|
|
700
|
+
- ملفات قائمة API وملفات الأنواع تُعاد توليدها في كل مرة
|
|
701
|
+
- يُنصح بإدراج الملفات المولدة في التحكم في الإصدار لسهولة مراجعة التغييرات
|
|
702
|
+
|
|
440
703
|
# تعليمات استخدام أمر `anl lint`
|
|
441
704
|
|
|
442
705
|
> يوفر وظيفة تكوين أدوات lint المختلفة لمشروع الواجهة الأمامية بنقرة واحدة، بما في ذلك:
|