Ответ
Отправка HTTP-запросов из терминала — стандартная задача для тестирования API, отладки и автоматизации. Основные инструменты: cURL и HTTPie.
1. Использование cURL (универсальный, есть везде)
- Базовый GET-запрос:
curl https://api.example.com/v1/users - GET с заголовками и параметрами:
curl -X GET -H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json" "https://api.example.com/v1/users?active=true&limit=10" - POST с JSON-телом:
curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' https://api.example.com/v1/users - Полезные флаги для отладки:
-i– показать заголовки ответа.-v– подробный вывод (verbose), показывает весь процесс обмена.--connect-timeout 5– таймаут на соединение.--max-time 10– общий таймаут операции.
2. Использование HTTPie (более удобный для API)
- Установка:
pip install httpieили через пакетный менеджер ОС. - GET-запрос (автоматически красиво печатает JSON):
http GET https://api.example.com/v1/users Authorization:"Bearer YOUR_TOKEN" - POST с JSON (синтаксис проще):
http POST https://api.example.com/v1/users name="John" age:=30name="John"– строковый параметр.age:=30– числовой параметр (HTTPie сам преобразует в JSON-число).
3. Автоматизация и сложные сценарии
Для цепочек запросов (например, получение токена, а затем его использование) удобно писать shell-скрипты:
#!/bin/bash
# Получаем токен аутентификации
TOKEN=$(curl -s -X POST https://api.example.com/auth
-H "Content-Type: application/json"
-d '{"login":"user","password":"pass"}'
| jq -r '.access_token')
# Используем токен для получения данных
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/data
(Для работы с JSON в bash часто используется утилита jq).