
Вероятность того, что разработчик программного обеспечения коснется API во время своей повседневной работы, огромна. API-интерфейсы повсюду, и они обеспечивают работу Интернета в том виде, в каком мы его знаем. Создание любого современного онлайн-приложения требует использования API в какой-то момент процесса.
Даже если вы не создаете ориентированные на пользователя веб-приложения, серверные системы и встроенные платформы могут использовать API для межмашинного взаимодействия. Эти строительные блоки неизбежны. Так почему бы не улучшить взаимодействие с ними? Даже если вы проводите большую часть своего времени в интерфейсе командной строки, все равно есть масса интересных опций.
В этой статье мы рассмотрим инструменты, позволяющие манипулировать API, не выходя из командной строки. Используя эти инструменты, вы можете совершать вызовы конечных точек, тестировать пути и многое другое. Самое приятное в них то, что они просты в использовании и требуют небольших накладных расходов для интеграции в ваш существующий рабочий процесс.
1. завиток

Это старый верный. Утилита, которая существует уже более 25 лет и является одним из основных продуктов мира Linux. Если вы хотите сделать что-нибудь, что связано с веб-запросом из CLI, это ваша программа по умолчанию.
Утилита curl установлена или доступна почти во всех операционных системах на базе Unix. Он легкий, простой в использовании и обладает достаточным количеством функций для поддержки сложных операций. Если вы не выполняете какие-то сложные многоэтапные вызовы, вы, вероятно, можете выполнить все с помощью curl.
Давайте посмотрим, как сделать несколько простых запросов. Для этих примеров мы будем использовать наш проверенный и надежный JSONPlaceholder API. Первый — очень простой GET-запрос:
curl https://jsonplaceholder.typicode.com/users
Это достаточно просто, просто введите URL-адрес, и curl по умолчанию будет использовать запрос GET. А что, если бы мы захотели опубликовать некоторый контент в нашем API?
curl -X POST -H 'Content-Type: application/json' \
-d '{"title":"foo","body":"bar"}' \
https://jsonplaceholder.typicode.com/posts
Этот запрос немного сложнее. Давайте разберем, что здесь происходит:
- Во-первых, мы сообщаем
curl, что хотим POST, используя флаг-Xи передавая метод. - Затем мы добавляем заголовок, чтобы указать формат наших входящих данных, используя
-H. Здесь мы сообщаемcurl, что будем передавать данные JSON. - Наконец, мы передаем наши данные JSON и URL.
Используя curl, мы можем выполнять основные задачи с помощью API. Существует более 240 флагов, которые вы можете передать при отправке запроса, что делает его очень гибким. Прежде чем прибегать к чрезмерно сложной системе тестирования API, просто попробуйте curl.
2. HTTP-пирог

Эта маленькая программа командной строки настолько крута, что у нее есть все шансы заставить вас забыть о curl. Утилита HTTPie — это более интуитивно понятный способ взаимодействия с API. Вам не нужно беспокоиться о передаче каждого маленького флажка, как в случае с curl. Вы можете просто начать использовать API, как если бы они были расширением самой программы.
Давайте посмотрим, как мы будем делать те же запросы, что и с curl, используя HTTPie. Сначала наш простой запрос GET:
http https://jsonplaceholder.typicode.com/users
Довольно просто. Аналогичен синтаксису curl, но с некоторыми дополнительными преимуществами. По умолчанию вы получите раскрашенный, отформатированный вывод JSON, а также статистику по самому запросу:

Это очень удобно, потому что вам не придется выискивать флаги или тратить время на выяснение того, как включить нужную статистику. Они просто будут там по умолчанию.
Теперь давайте посмотрим, как сделать POST:
http POST https://jsonplaceholder.typicode.com/posts title=foo body=bar
Именно здесь HTTPie действительно начинает сиять. Синтаксис намного чище и легче запоминается. Если вы хотите сделать POST, просто скажите об этом, передайте URL-адрес, а затем добавьте свои данные в виде пар ключ-значение. Заголовки устанавливаются за вас, и вам не нужно передавать какой-либо необработанный JSON, если вы этого не хотите.
Супер просто, супер быстро.
3. Бросок

Представьте, что вы могли бы воспользоваться эффективностью curl, но дать ему собственный язык для разработки запросов. Это именно то, что представляет собой Хёрл. Эта удобная утилита предоставляет вам простой, но мощный язык для создания наборов запросов. Вы можете выполнять тесты, хранить данные и выполнять сложные многоэтапные операции.
Сила Hurl исходит из его процедурного языка. Вы можете использовать этот язык для разработки своего запроса так же, как и любой другой язык программирования. Разница здесь в том, что Hurl создан специально для веб-запросов. Вам не нужно тратить время на импорт библиотек, настройку функций или любое другое шаблонное повторение. Вы можете начать отправлять запросы прямо сейчас.
Давайте посмотрим, как мы выполним наш простой запрос GET:
# test.hurl GET https://jsonplaceholder.typicode.com/users
Запрос должен быть помещен в файл .hurl. В данном случае мы поместили его в test.hurl. Теперь все, что вам нужно сделать, это запустить его, используя:
hurl test.hurl
Вы должны увидеть тот же результат вывода, как если бы вы выполнили запрос, используя curl. Теперь давайте посмотрим, как выполнить наш POST:
# test.hurl
POST https://jsonplaceholder.typicode.com/posts
{
"title": "foo",
"body": "bar"
}
Здесь мы сделали наш POST так же, как и с GET, но мы также добавили некоторые данные для отправки. Для этого вы буквально просто пишете отформатированный JSON на следующей строке. Это очень просто и делает отправку больших блоков данных менее запутанной. Вы также можете импортировать JSON из файла, используя следующее:
# test.hurl POST https://jsonplaceholder.typicode.com/posts Content-Type: application/json file,test.json;
Теперь вы можете управлять своими данными и запросами отдельно. Это делает тесты более чистыми и позволяет легко программно генерировать JSON в выделенные файлы.
Набор функций, поддерживаемых Hurl, — мечта разработчика API. Вы можете выполнять тесты для различных стилей API, проверять коды возврата и анализировать ответы, используя простой и понятный синтаксис.
4. ария2
Эта маленькая (и я имею в виду маленькая) утилита очень маленькая, супер быстрая и поддерживает массу различных протоколов. Вы даже можете использовать его для загрузки файлов BitTorrent. Программа aria2 была создана для эффективности и скорости. Хотя он не поддерживает все традиционные методы (например, POST), вы все равно можете использовать aria2 для таких вещей, как статистика скорости и загрузка больших наборов данных.

Используя aria2, вы можете разделять загрузки, распараллеливать запросы и даже ускорять загрузку, выполняя несколько отдельных запросов для одного и того же файла.
Например, предположим, что мы хотим загрузить файл большего размера с конечной точки, но мы хотим использовать несколько разных соединений, чтобы ускорить его. Используя aria2, мы могли бы добиться этого, выполнив:
aria2c -x4 http://ipv4.download.thinkbroadband.com/1GB.zip
При этом используются четыре отдельных соединения для загрузки одного и того же файла. Это приводит к увеличению скорости загрузки некоторых файлов почти на 15–20%.
Хотя вы не можете протестировать свой API традиционным способом с помощью aria2, вы можете обрабатывать большие запросы GET и получать подробные данные о времени загрузки. Это особенно полезно для тестирования пропускной способности.
Посетите официальную страницу документации для получения подробной информации об использовании.
5. Дредд

Этот проект не заменит curl или другие механизмы запросов, но он выполнит одну важную задачу для API. Это обеспечит синхронизацию документации и фактической функциональности API. Приложение Dredd было создано для решения невероятно неприятной проблемы устаревшей документации.
Рабочий процесс Dredd можно встроить в хуки Git или запустить в качестве теста для проверки изменений в отношении API. Работает на основе формата документации OpenAPI. Обычно это файл .apib или API Blueprint. Передайте файл документации и работающую конечную точку API, а Dredd сделает все остальное:
dredd ./<documentation>.apib http://<api_endpoint>
В настоящее время, с таким количеством автоматизированных решений для документирования API, вопиющим образом упустить что-то подобное. Найдите несоответствие документации и быстро найдите его с помощью Dredd.
Спасибо за прочтение! Пожалуйста, найдите время, чтобы подписаться, подписаться и зарегистрироваться, если вы еще этого не сделали. Ознакомьтесь с еще несколькими замечательными статьями ниже:
- 8 ежедневных задач, которые выполняет профессиональный разработчик
- 6 утилит Linux, которые нужно установить прямо сейчас
- 5 бесплатных веб-сайтов по программированию, которые сделают вас лучшим программистом
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу