В витрине предусмотрен модуль, который выступает в качестве REST-сервера. Он позволяет выполнять стандартные запросы для URL с помощью методов:
- GET (Получение данных. Метод предназначен для получения данных из таблицы или какой-либо строки из таблицы витрины)
- POST (Добавление/изменение данных. Метод предназначен для заполнения или внесения изменений в данные в одной или нескольких существующих таблиц витрины)
- DELETE (Удаление данных. Метод предназначен для удаления данных из одной или нескольких существующих таблиц витрины)
Полученные данные модуль REST API передает модулю CSV-uploader, который загружает данные в витрину.
Далее рассмотрим подробнее каждый метод.
GET - Получение данных
URL |
protocol://name[:port]/api/csv/[table] protocol - http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader. port - номер tcp-порта; api/csv - постоянный путь table – наименование витрины и таблицы, данной витрины, из которой необходимо получать данные. После указания таблицы может быть указан id – первичный ключ таблицы, по которому необходимо получить данные. |
Аутентификция |
Не используется |
Протокол |
http |
Входные параметры |
Идентификатор конкретного ресурса (числовой или строковый). |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). Возвращается стандартный http ответ с хедерами content-type,content-disposition(должен содержать имя csv-файла), и content-length. |
http-статус коды в ответе |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 404 - в случае, если не найден ресурс из url 500 - внутренняя ошибка загрузчика |
Пример:
http://t5-csv-uploader-01.ru-central1.internal:8080/api/csv/demo_view.passenger/1 |
В представленном примере:
- http – протокол передачи данных;
- t5-csv-uploader-01.ru-central1.internal - имя сервера;
- 8080 – порт подключения;
- api/csv/demo_view.passenger - постоянная часть пути до таблицы passengers, в витрине demo_view;
- 1 - первичный ключ пассажира из таблицы passengers, информацию по которому предполагается получить (в случае если не указан, вернуться все данные из таблицы passengers).
POST - Добавление/изменение данных (1 файл)
URL |
http/name[:port]/api/csv/[table] protocol - http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader; port - номер tcp-порта; api/csv - постоянный путь table – наименование витрины и таблицы, данной витрины, которую необходимо наполнить данными или внести изменения. |
Header |
Content-Type: application/octet-stream |
Аутентификация |
Не используется |
Протокол |
http |
Входные параметры |
mimeType: application/octet-stream файл в формате csv, содержащий данные таблицы. |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). |
http-статус Код ответа |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 500 - внутренняя ошибка загрузчика |
Пример:
http://t5-csv-uploader-01.ru-central1.internal:8080/api/csv/demo_view.passenger |
В представленном примере:
- http – протокол передачи данных;
- t5-csv-uploader-01.ru-central1.internal - имя сервера;
- 8080 – порт подключения;
- api/csv/demo_view.passenger - постоянная часть пути до таблицы passengers, в витрине demo_view в которую необходимо внести изменения.
Файл, содержащий данные, которые требуется добавить/изменить указывается в теле сообщения (тип: file) содержимое csv-файла - demo_view_passenger.csv.
POST - Добавление/изменение данных (несколько файлов)
URL |
protocol://name[:port]/multipart/csv/null protocol - http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader; port - номер tcp-порта; multipart/csv/null – постоянный путь для использования нескольких файлов. |
Header |
Content-Type: multipart/form-data |
Аутентификация |
Не используется |
Протокол |
http |
Входные параметры |
mimeType: multipart/form-data Пары значений: Наименование - файл в формате csv, содержащий данные таблицы. |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). |
http-статус Код ответа |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 500 - внутренняя ошибка загрузчика |
Пример:
http://t5-csv-uploader-01.ru-central1.internal:8080/api/multipart/csv/null |
В представленном примере:
- http – протокол передачи данных;
- t5-csv-uploader-01.ru-central1.internal - имя сервера;
- 8080 – порт подключения.
Файлы, содержащие данные, которые требуется добавить/изменить, указываются в теле сообщения (тип: multipart) содержимое:
file1 - demo_view_passenger(1).csv
file2 - demo_view_passenger(2).csv
DELETE - Удаление данных (1 файл)
URL |
protocol://name[:port]/api/csv/[table] protocol - http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader; port - номер tcp-порта; api/csv - постоянный путь table – наименование витрины и таблицы, этой витрины данные которой необходимо удалить. |
Header |
Content-Type: application/octet-stream |
Аутентификция |
Не используется |
Протокол |
http |
Входные параметры |
mimeType: application/octet-stream Путь, по которому находится файл в формате csv, содержащий данные подлежащие удалению. |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). |
http-статус Код ответа |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 500 - внутренняя ошибка загрузчика |
Пример:
http://t5-csv-uploader-01.ru-central1.internal:8080/api/csv/demo_view.passenger |
В представленном примере:
- http – протокол передачи данных;
- t5-csv-uploader-01.ru-central1.internal - имя сервера;
- 8080 – порт подключения
- api/csv/demo_view.passenger - постоянная часть пути до таблицы passengers, в витрине demo_view.
Файл, содержащий данные, которые требуется удалить, указывается в теле сообщения (тип: file) содержимое csv-файла - demo_view_passenger.csv.
DELETE - Удаление данных (несколько файлов)
URL |
protocol://name[:port]/multipart/csv/null protocol -http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader; port - номер tcp-порта; multipart/csv/null – постоянный путь для использования нескольких файлов. |
Header |
Content-Type: multipart/form-data |
Аутентификция |
Не используется |
Протокол |
http |
Входные параметры |
mimeType: multipart/form-data Пары значений: Наименование - файл в формате csv, содержащий данные таблицы. |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). |
http-статус Код ответа |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 500 - внутренняя ошибка загрузчика |
Пример:
http://t5-csv-uploader-01.ru-central1.internal:8080/api/multipart/csv/null |
В представленном примере:
- http – протокол передачи данных;
- t5-csv-uploader-01.ru-central1.internal - имя сервера;
- 8080 – порт подключения.
Файлы, содержащие данные, которые требуется добавить/изменить, указывается в теле сообщения (тип: multipart) содержимое:
file1 - demo_view_passenger(1).csv
file2 - demo_view_passenger(2).csv
Использование Curl для загрузки данных
В примере показан метод POST для загрузки данных в таблицу.
URL |
protocol://name[:port]/ api/csv/[table] protocol -http; name - ip или FQDN http-сервера, на котором установлен CSV - uploader; port - номер tcp-порта; api/csv/– постоянный путь для использования Curl для загрузки данных. table – наименование витрины и таблицы, данной витрины, которую необходимо наполнить данными или внести изменения. |
Header |
Content-Type: text/plain |
Аутентификация |
Не используется |
Протокол |
http |
Входные параметры |
Содержимое для загрузки data-raw |
Выходные параметры |
В случае успешного выполнения http-код ответа равен 200 (OK). |
http-статус Код ответа |
200 - в случае успешного выполнения 400 - в случае пользовательской ошибки (сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса/входных данных) 500 - внутренняя ошибка загрузчика |
Пример:
curl --location --request POST 'http://localhost:8080/api/csv/test_para.passenger' --header 'Content-Type: text/plain' --data-raw 'code;id;firstname;middlename;lastname;birthday;passport 1;8255bcce-fa66-4915-b805-c06e003bc7fb;33;Васильевич;Кротов;03.12.1992;/test/test.zip 2;2bd4c379-8fa8-40a1-9eb1-1dde12bd6998;Иван;Иванов;Иванович;03.10.1990;/test/image/Picture_10.jpg' |
В представленном примере:
- http – протокол передачи данных;
- localhost - имя сервера;
- 8080 – порт подключения;
- api/csv/test_para.passenger - постоянная часть пути до таблицы passengers, в Витрине test_para.