flamerest 1.0.106 → 1.0.108
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/REST.js +33 -15
- package/package.json +1 -1
package/REST.js
CHANGED
|
@@ -57,7 +57,7 @@ class FLAMEREST {
|
|
|
57
57
|
/**
|
|
58
58
|
*
|
|
59
59
|
* @param {string} url Адрес
|
|
60
|
-
* @param {object|string} params Параметры, которые надо передать, могут быть в виде объекта или строки
|
|
60
|
+
* @param {object|string|FormData} params Параметры, которые надо передать, могут быть в виде объекта или строки
|
|
61
61
|
* @param {string} type Тип
|
|
62
62
|
* @param {string} responseType Тип ответа: json или blob
|
|
63
63
|
* @param {Object} customHeaders объект с доп заголовками, которые надо включить в запрос
|
|
@@ -66,11 +66,18 @@ class FLAMEREST {
|
|
|
66
66
|
|
|
67
67
|
// Нормализуем параметры, если они есть
|
|
68
68
|
if (typeof params === "object" && params !== null) {
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
|
|
70
|
+
if (!(params instanceof FormData))
|
|
71
|
+
params = JSON.stringify(params);
|
|
72
|
+
|
|
73
|
+
if (type === 'GET')
|
|
74
|
+
type = 'POST';
|
|
75
|
+
|
|
71
76
|
responseType = 'json';
|
|
77
|
+
|
|
72
78
|
}
|
|
73
79
|
|
|
80
|
+
|
|
74
81
|
// Подставляем сервер автоматом в запрос начинающийся с /
|
|
75
82
|
if (url[0] === '/' && url[1] !== '/') url = this.SERVER + url;
|
|
76
83
|
|
|
@@ -103,12 +110,14 @@ class FLAMEREST {
|
|
|
103
110
|
let requestBody = {
|
|
104
111
|
method: type,
|
|
105
112
|
mode: 'cors',
|
|
106
|
-
headers: Object.assign(
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
headers: Object.assign(
|
|
114
|
+
(params instanceof FormData ? {} : {
|
|
115
|
+
'Content-type': 'application/json; charset=utf-8'
|
|
116
|
+
}), customHeaders)
|
|
109
117
|
};
|
|
110
118
|
|
|
111
119
|
if (type !== 'GET')
|
|
120
|
+
// Принимает и formData тоже и чистую json строку
|
|
112
121
|
requestBody.body = params;
|
|
113
122
|
|
|
114
123
|
// Создаём подпись каждого запроса
|
|
@@ -458,7 +467,8 @@ class FLAMEREST {
|
|
|
458
467
|
table = table.replace(/_/g, "");
|
|
459
468
|
|
|
460
469
|
// Подготовить значения
|
|
461
|
-
|
|
470
|
+
if (!(values instanceof FormData))
|
|
471
|
+
await this.prepare(values);
|
|
462
472
|
|
|
463
473
|
if (appendTo === undefined) appendTo = null;
|
|
464
474
|
if (insertAfter === undefined) insertAfter = null;
|
|
@@ -468,7 +478,7 @@ class FLAMEREST {
|
|
|
468
478
|
+ (appendTo !== null ? '&appendTo=' + appendTo : '')
|
|
469
479
|
+ (insertAfter !== null ? '&insertAfter=' + insertAfter : '')
|
|
470
480
|
+ (insertFirst !== null ? '&insertFirst=' + insertFirst : '')
|
|
471
|
-
, JSON.stringify(values), 'POST');
|
|
481
|
+
, (values instanceof FormData ? values : JSON.stringify(values)), 'POST');
|
|
472
482
|
|
|
473
483
|
}
|
|
474
484
|
|
|
@@ -506,7 +516,8 @@ class FLAMEREST {
|
|
|
506
516
|
table = table.replace(/_/g, "");
|
|
507
517
|
|
|
508
518
|
// Подготовить значения
|
|
509
|
-
|
|
519
|
+
if (!(values instanceof FormData))
|
|
520
|
+
await this.prepare(values);
|
|
510
521
|
|
|
511
522
|
if (appendTo === undefined) appendTo = null;
|
|
512
523
|
if (insertAfter === undefined) insertAfter = null;
|
|
@@ -516,7 +527,7 @@ class FLAMEREST {
|
|
|
516
527
|
+ (appendTo !== null ? '&appendTo=' + appendTo : '')
|
|
517
528
|
+ (insertAfter !== null ? '&insertAfter=' + insertAfter : '')
|
|
518
529
|
+ (insertFirst !== null ? '&insertFirst=' + insertFirst : '')
|
|
519
|
-
, JSON.stringify(values), 'PATCH');
|
|
530
|
+
, (values instanceof FormData ? values : JSON.stringify(values)), 'PATCH');
|
|
520
531
|
}
|
|
521
532
|
|
|
522
533
|
/**
|
|
@@ -638,9 +649,12 @@ class FLAMEREST {
|
|
|
638
649
|
* Подготовить объект под загрузку: загрузить данные из элементов Input [type=file] / Clipboard / DataTransfer [Drag&Drop/Clipboard]
|
|
639
650
|
* @param {object} values
|
|
640
651
|
*/
|
|
641
|
-
async prepare(values) {
|
|
652
|
+
async prepare(values, asFormData = false) {
|
|
642
653
|
|
|
643
654
|
// Если в один из параметров передан FileList или input[type=file], т.е. нужно загрузить файлы
|
|
655
|
+
|
|
656
|
+
const formData = new FormData();
|
|
657
|
+
|
|
644
658
|
for (let val in values) {
|
|
645
659
|
|
|
646
660
|
// Пустые значения нам не нужны
|
|
@@ -676,10 +690,12 @@ class FLAMEREST {
|
|
|
676
690
|
if (value instanceof FileList) {
|
|
677
691
|
let newValues = [];
|
|
678
692
|
value = Array.from(value);
|
|
679
|
-
for (let
|
|
693
|
+
for (let index = 0; index < value.length; index++) {
|
|
694
|
+
formData.append(val + "[]", value[index])
|
|
680
695
|
newValues.push({
|
|
681
|
-
'name': value[
|
|
682
|
-
'data': await this.readFileAsync(value[
|
|
696
|
+
'name': value[index].name,
|
|
697
|
+
'data': asFormData ? null : await this.readFileAsync(value[index]),
|
|
698
|
+
'number': index, // Здесь индекс
|
|
683
699
|
'id': this.generateID(32)
|
|
684
700
|
});
|
|
685
701
|
}
|
|
@@ -703,7 +719,9 @@ class FLAMEREST {
|
|
|
703
719
|
}
|
|
704
720
|
}
|
|
705
721
|
|
|
706
|
-
|
|
722
|
+
formData.append("json", JSON.stringify(values));
|
|
723
|
+
|
|
724
|
+
return asFormData ? formData : values;
|
|
707
725
|
|
|
708
726
|
}
|
|
709
727
|
|