#1825: Использование команды CURL для запросов к API
Отредактирована: 173 дня назадСимптомы
Каким образом делать запросы к API через команду curl ?
Решение
-
Для запросов должен быть включен XML-RPC на соответствующей зоне UserGate
-
Для отправки запросов к UserGate через API используем метод POST:
curl -X POST
- Структура запроса зависит от используемого метода, которые можно найти в документации к 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
- Формируем запрос, учитываем, что API ожидает получения контента запроса в формате JSON, поэтому необходимо использовать -H ключ, чтобы модифицировать заголовок POST запроса:
-H 'Content-Type: application/json'
-
Получаем через метод v2.core.login нужные данные для подстановки в тело запроса, описанного на шаге 6.
-
Через ключ -d передаем тело запроса, как если бы передавали значения через браузер в HTML форме, нажимая на кнопку. Необходимо учесть передачу данных в квадратных скобках:
-d '[auth_token, node_name, {}]'
- Итоговый вариант:
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, {}]'