Введение в инструмент командной строки cURL

Недавно мне было предложено создать временный код для создания серверной части Ruby on Rails, которая будет действовать как RESTful API. В дополнение ко всем техническим требованиям мне сказали, что единственный способ взаимодействия пользователей с этим API - curl.

До этого испытания я никогда не видел и не использовал curl. Поэтому мне нужно было быстро изучить и ознакомиться с curl, чтобы убедиться, что мой API будет вести себя так, как ожидалось.

Что такое CURL?

Проще говоря, curl - это инструмент командной строки и библиотека для передачи данных с URL-адресами (документация cURL). cURL означает Библиотека клиентских URL-запросов. Это бесплатно, с открытым исходным кодом, и исходный код можно найти на GitHub / curl.

Следует отметить, что cURL как организация на самом деле производит два продукта: curl и libcurl. Первый - это инструмент командной строки, который я изучу более подробно, а libcurl - это библиотека разработки для использования в других программах.

Как использовать CURL?

Я, конечно, не смогу охватить все методы использования curl, потому что существует около 170 вариантов команд curl. При этом я приведу несколько полезных примеров использования curl из командной строки.

GET запрос

Чтобы сделать простой запрос GET, все, что нужно сделать, это использовать curl + URL-адрес веб-сайта. Например, curl https://medium.com даст следующие результаты:

Вы также можете передать дополнительные элементы вместе с вашим запросом GET. Например, если веб-сайт имеет защищенное содержание, curl позволяет передавать учетные данные для аутентификации. Для этого используйте следующий синтаксис:

curl --user "USERNAME:PASSWORD" https://www.domain.com.

«ИМЯ ПОЛЬЗОВАТЕЛЯ» необходимо заменить своим фактическим именем пользователя в кавычках. Если вы не хотите включать свой пароль в историю командной строки, вы можете просто использовать следующий запрос: curl --user "USERNAME" https://www.domain.com, и вам будет предложено ввести учетные данные для входа.

POST запрос

В случае моей проблемы с кодом было важно, чтобы мой RESTful API правильно обрабатывал отправленную ему информацию. Чтобы отправить POST на веб-сайт / API, используйте следующий синтаксис:

curl --data -X POST "param1=value1&param2=value2" https://medium.com

Флаг --data подразумевает запрос POST, поэтому вы можете не использовать флаги -X POST. URL-адрес, на который вы публикуете, идет после данных, которые вы отправляете.

УДАЛИТЬ запрос

Если ваш API следует соглашениям RESTful, вы сможете удалить конкретный экземпляр, отправив запрос DELETE по правильному маршруту /: id. Например, если бы у меня был API расписаний, и я хотел бы удалить одно из этих расписаний, я бы использовал следующую команду: curl -X "DELETE" http://localhost:3000/schedules/:id, где :id - идентификатор существующего расписания.

Изменение Content-Type

Стандартные данные, отправленные с curl, отправляются с использованием типа данных application/x-www-form-urlencoded. Основная цель этого типа запроса - отправить на сервер список пар имя / значение. Хотя это curl значение по умолчанию, вы не ограничены отправкой данных таким образом. Это также не самый эффективный способ отправки данных, и вы не захотите использовать значение по умолчанию, если вы отправляете большие объемы данных.

Браузеры также должны поддерживать отправку данных как multipart/form-data. Для этого требуется некоторая дополнительная информация, в первую очередь заголовки MIME (многоцелевое расширение почты Интернета).

Кроме того, вы можете выбрать отправку информации в формате JSON. Для этого мы должны использовать флаг -H “Content-Type: application/json”, чтобы указать, что мы добавляем заголовок. Пример запроса POST, отправленного в формате JSON, будет выглядеть следующим образом:

curl -H "Content-Type: application/json" --data '{"name": "Sample Schedule Name"}' http://localhost:3000/schedules

Вышеупомянутый curl POST создаст новое расписание для нашего воображаемого RESTful API, где имя нового расписания будет: «Образец имени расписания».

Несколько забавных и интересных вещей, которые вы можете сделать с curl

  • Узнай погоду.
    Запустив команду: curl http://wttr.in/LOCATION и добавив желаемое местоположение, вы получите прогноз желаемого местоположения.

  • Проверьте статус веб-сайта.
    Выполнив команду: curl -Is https://www.medium.com -L | grep HTTP/, вы сможете увидеть код ответа HTTP с запрошенного URL.

  • Найдите свой внешний IP-адрес.
    Вы можете определить свой внешний IP-адрес, выполнив команду:
    curl ifconfig.me
    Ваш внешний IP-адрес отличается от вашего локального IP-адреса.

Внешний или общедоступный IP-адрес используется во всем Интернете для поиска компьютерных систем и устройств. Локальный или внутренний IP-адрес используется внутри частной сети для определения местоположения подключенных к ней компьютеров и устройств.

- В чем разница между внешними и локальными IP-адресами?

Ресурсы

Если у вас есть более чем случайный интерес к curl, вы можете найти дополнительную информацию, обратившись к curl документации.

Электронная книга cURL и справочная информация: https://ec.haxx.se/

Руководство по cURL: https://curl.haxx.se/docs/manual.html