#1825: Использование команды CURL для запросов к API

Отредактирована: 173 дня назад

Симптомы

Каким образом делать запросы к API через команду curl ?

Решение

  1. Для запросов должен быть включен XML-RPC на соответствующей зоне UserGate

  2. Для отправки запросов к UserGate через API используем метод POST:

curl -X POST

  1. Структура запроса зависит от используемого метода, которые можно найти в документации к API UserGate.
    Рассмотрим на примере метода v1.netmanager.gateways.list (вывод списка шлюзов):
    В нем используются три аргумента:

v1.netmanager.gateways.list(String auth_token, String node_name, Struct pattern)

Для запроса нам необходимо получить значение auth_token, node_name.
Struct в данном случае передается как словарь Dictionary. Не требуется в данном случае передавать ключи, поэтому оставим dictionary пустым. В некоторых методах может потребоваться указывать ключи и их значения {'key':'value'}.
Можно также передать для ключа boolean-value, если для ключа подходят состояние True/False

  1. Формируем запрос, учитываем, что API ожидает получения контента запроса в формате JSON, поэтому необходимо использовать -H ключ, чтобы модифицировать заголовок POST запроса:

-H 'Content-Type: application/json'

  1. Получаем через метод v2.core.login нужные данные для подстановки в тело запроса, описанного на шаге 6.

  2. Через ключ -d передаем тело запроса, как если бы передавали значения через браузер в HTML форме, нажимая на кнопку. Необходимо учесть передачу данных в квадратных скобках:

-d '[auth_token, node_name, {}]'

  1. Итоговый вариант:

curl -X POST http://10.10.10.10:4040/web_api/v1.netmanager.gateways.list -H 'Content-Type: application/json' -d '[auth_token, node_name, {}]'