Импорт записей в табличный список
Запрос
| Тип | Метод |
|---|---|
POST |
/value_stores/{id}/upload |
Описание: метод загружает записи из файла в табличный или белый список.
Поддерживаются следующие форматы импорта:
json— массив объектов с полями_id,_ttlи полями схемы табличного списка;csv— первая колонка_id, последняя колонка_ttl, между ними располагаются поля схемы;excel— ячейкаA1содержит_id, последняя колонка содержит_ttl, между ними располагаются поля схемы.
Поведение при импорте зависит от значения параметра update:
false— данные хранилища очищаются, после чего загружаются данные из файла;true— данные из файла добавляются или обновляются без полной очистки хранилища.
Для формата csv дополнительно можно указать разделитель и кодировку.
Пример запроса
POST
http://127.0.0.1/cruddy/v2/value_stores/550e8400-e29b-41d4-a716-446655440000/upload?format=json
Параметры пути:
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| id | string (UUID) |
Required | ID табличного или белого списка |
Параметры строки запроса:
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| format | string |
Required | Формат загружаемого файла: json, csv или excel |
Тип тела запроса: multipart/form-data.
Параметры тела запроса:
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| file | binary |
Required | Файл с импортируемыми данными |
| update | boolean |
Optional | Определяет режим загрузки данных. По умолчанию — false |
| delimiter | string |
Optional | Разделитель CSV. Используется только при format=csv. По умолчанию — ; |
| encoding | string |
Optional | Кодировка CSV. Используется только при format=csv. По умолчанию — cp1251 / win-1251, если в файле отсутствует UTF BOM |
Требования к содержимому файла:
- для
json— массив объектов вида[{"_id":"...","_ttl":0,"<поле_схемы>":"..."}]; - для
csv— первая строка содержит_id, поля схемы и_ttl; - для
excel— ячейкаA1должна содержать_id, далее располагаются поля схемы, последняя колонка —_ttl.
Примечание: В OpenAPI есть несоответствие в описании параметра
update: в текстовом описании указано, что значениеtrueдолжно передаваться строкойtrue, при этом в схемеmultipart/form-dataпараметр имеет типboolean.
Успешный ответ
Статус код: 200 – данные успешно импортированы.
Формат: JSON.
Тело ответа соответствует модели KvsUploadResponse.
Другие возможные ответы
| Код | Ответ | Описание |
|---|---|---|
400 |
Ошибка параметров или файла | Ошибка в параметрах запроса, формате или содержимом импортируемого файла |
401 |
can't get user info: |
Невозможно аутентифицировать пользователя |
404 |
Хранилище не найдено | Табличный список с указанным ID не найден |
500 |
Internal Server Error |
Ошибка при обработке или загрузке файла |
Возможные ошибки:
400—"missing uid header"— отсутствует заголовокPgr-User-ID;400—"Pgr-User-Id should be uuid format"— неверный форматPgr-User-ID;400—"format must be one of: json, csv, excel"— параметрformatне передан или имеет недопустимое значение;400—"id not specified"— не передан параметрid;400—"failed to parse form"— ошибка разбораmultipart/form-data;400—"file not found in request"— в запросе не передан файл или передано более одного файла;400—"cannot open form file"— ошибка открытия файла из формы;400—"cannot open file"— ошибка открытия файла;400—"cannot read file"— ошибка чтения файла;400—"cannot parse json file"— ошибка разбора JSON-файла;400—"failed to open excel file: ..."— ошибка открытия Excel-файла;400—"failed to read first col and row from excel file: ..."— ошибка чтения ячейкиA1;400—"first column and row must be equal to '_id'"— значение ячейкиA1не равно_id;401—"can't get user info:"— невозможно аутентифицировать пользователя;404—"RvsUploadJson error: get store error: store not found"— хранилище не найдено;500—"scanner.ReadAll() failed: ..."— ошибка чтения CSV-файла;500—"GetRows(sheetName) failed: ..."— ошибка чтения строк Excel-файла;500—"RvsUploadJson error: ..."— ошибка загрузки данных в хранилище;500—"Internal Server Error"— ошибка сервера.
Пример ответа с кодом 400
{
"error": "format must be one of: json, csv, excel"
}
Пример ответа с кодом 404
{
"error": "RvsUploadJson error: get store error: store not found"
}
Пример ответа с кодом 500
{
"error": "Internal Server Error"
}