Что JavaScript-разработчику следует знать о Curl
Представляю Вашему вниманию перевод статьи «What JavaScript Developers Should Know About Curl» автора Valery Karpov.
Curl — это популярный инструмент командной строки, часто используемый для отправки HTTP-запросов. Curl поддерживает большое количество протоколов, однако как Node.js-разработчик вы, скорее всего, будете использовать его для отпраки http-запросов к RESTful API.
Документация curl представляет собой перечень из 383 флагов командной строки, поэтому в ней очень трудно найти то, что ищешь. В этой статье я хочу поделиться с вами некоторыми часто используемыми мной шаблонами. Для примеров будет использоваться сервис httpbin.org.
Отправка http-запроса
Для начала убедитесь в том, что у вас установлен curl, выполнив команду curl —version .
Для отправки запроса необходимо запустить curl url . Например, для отправки GET-запроса к https://httpbin.org/get?answer=42 следует запустить curl https://httpbin.org/get?answer=42 .
После успешного завершения запроса curl возвращает тело http-ответа. Для того, чтобы заставить curl вернуть весь ответ, включая заголовки, используйте флаг -i.
Это полный http-ответ. Заголовками ответа являются строки от date: до x-envoy-upstream-service-time: .
Загрузка файлов
Wget — самый распространенный инструмент для загрузки файлов посредством командной строки. Он входит в комплект большинства диструбутивов Linux. Однако в OSX его нет.
Команда wget url аналогична команде curl -OL url . Опция -О — это опция —remote-name , которая говорит curl сохранить тело ответа в локальном файле. Опция -L говорит curl следовать перенаправлениям.
Например, ниже представлено изображение с Unsplash, его URL — https://images.unsplash.com/photo-1506812574058-fc75fa93fead .

Для загрузки этого изобюражения необходимо выполнить следующее:
Опция -O говорит curl использовать строку после последнего / в качестве имени файла. В приведенном примере изображение будет сохранено в текущей директории с именем photo-1506812574058-fc75fa93fead . Для определения имени файла используйте опцию -о (строчная буква «о»).
Отправка авторизованного запроса
Заголовок авторизации используется для включения в запрос данных для авторизации при обращении к RESTful API. Для добавления указанных данных необходимо использовать флаг -H . Например, если ваш ключ интерфейса (API key) my-secret-token , вы можете включить его в http-запрос следующим образом:
Обратите внимание, что httpbin.org возвращает заголовки http-запроса в теле ответа в свойстве headers .
Curl также поддерживает авторизацию по-умолчанию посредством флага -u . В следующем примере мы отправляем запрос с именем пользователя user и паролем pass :
Вот что происходит при отправке неправильного имени пользователя или пароля:
Отправка POST-запроса, содержащего JSON
Флаг -X говорит curl, какой метод следует использовать: PUT, POST и т.д. По-умолчанию curl использует метод GET, поэтому писать curl -X GET не нужно.
Флаг -X часто используется совместно с флагом -d , позволяющим добавить тело запроса. В следующем примере показано как отправить POST-запрос, содержащий некоторый json:
Обратите внимание, что по-умолчанию значением заголовка Content-Type является application/x-www-form-urlencoded . Для json это является неверным, поэтому для определения Content-Type следует использовать флаг -H :
1: According to another post on SO:
If I am using SSL with curl, I still need a certificate file to figure out how to decrypt the message. SSL without a certificate file will never work. —insecure just means to blindly trust that the certificate file is valid.
Is that correct?
2: Chrome ‘magically’ recognizes certificates, curl does not.
Sites that work in Chrome don’t work thru curl unless you use —cacert. I am guessing that’s because certificates are a function of the application (browser) and not the OS.
11 примеров использование команд cURL в режиме реального времени
cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.
Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL — кроссплатформенная утилита для Windows, MAC и UNIX.
Ниже приведены некоторые часто используемые примеры синтаксиса.
1. Проверка возможности подключения к URL-адресу
Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl . Для этого используйте следующую команду:
2. Сохранение вывод URL / URI в файл
Если нужно сохранить содержимое URL или URI в конкретном файле, используйте следующий синтаксис:
Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html .
3. Показать заголовок запроса и ответа
Если хотите удостовериться, что получаете ожидаемый заголовок запроса и ответа, используйте следующую команду:
4. Загрузить с предельной скоростью
Если нужно узнать, сколько времени требуется для загрузки с определенной скоростью, то используйте следующую команду:
5. Использование прокси для подключения
Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:
6. Проверка URL-адресас введением заголовка
Для устранения конкретной проблемы можно использовать Curl , чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:
Мы просим curl передать Content-Type в качестве application / json в заголовок запроса.
7. Добавить дополнительный заголовок
Вы можете добавить заголовок к запросу с помощью синтаксиса — header .
8. Открыть только заголовок ответа
Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.
9. Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата
Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.
10. Подключиться с использованием определенного протокола (SSL / TLS)
Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS ,используйте следующий синтаксис.
Для подключения с использованием SSLV2:
Для подключения с использованием SSLV3:
Для подключения через TLS:
11. Загрузить файл с FTP-сервера
С помощью cURL можно загрузить файл с ftp-сервера , указав имя пользователя и пароль.
Всегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.
Использования cURL онлайн
Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
Online CURL — компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.

cURL command line builder –позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.

cURL — полезная утилита для устранения проблем с подключением в режиме реального времени.
Дайте знать, что вы думаете по этой теме в комментариях. Мы крайне благодарны вам за ваши комментарии, подписки, дизлайки, отклики, лайки!
Пожалуйста, оставляйте свои отзывы по текущей теме статьи. За комментарии, подписки, дизлайки, отклики, лайки огромное вам спасибо!
Вадим Дворников автор-переводчик статьи « 11 cURL Command Usage with Real-Time Example »