Введение в инструмент командной строки 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¶m2=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-адрес используется внутри частной сети для определения местоположения подключенных к ней компьютеров и устройств.
Ресурсы
Если у вас есть более чем случайный интерес к curl
, вы можете найти дополнительную информацию, обратившись к curl
документации.
Электронная книга cURL и справочная информация: https://ec.haxx.se/
Руководство по cURL: https://curl.haxx.se/docs/manual.html