Вероятность того, что разработчик программного обеспечения коснется 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.

Спасибо за прочтение! Пожалуйста, найдите время, чтобы подписаться, подписаться и зарегистрироваться, если вы еще этого не сделали. Ознакомьтесь с еще несколькими замечательными статьями ниже:

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу