HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>24 окт 2024</li>
2 <ul><li>24 окт 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Осваиваем швейцарский нож для взаимодействия с сетевыми протоколами.</p>
4 </ul><p>Осваиваем швейцарский нож для взаимодействия с сетевыми протоколами.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Филолог и технарь, пишет об IT так, что поймут даже новички. Коммерческий редактор, автор технических статей для vc.ru и "Хабра".</p>
6 <p>Филолог и технарь, пишет об IT так, что поймут даже новички. Коммерческий редактор, автор технических статей для vc.ru и "Хабра".</p>
7 <p>Curl (Client URL, или "Клиентский URL") - это инструмент<a>командной строки</a>, предназначенный для передачи данных по различным сетевым протоколам. Он помогает разработчикам, системным администраторам и другим специалистам выполнять<a>HTTP-запросы</a>, загружать файлы, тестировать<a>API</a>и решать множество задач по отладке веб-приложений.</p>
7 <p>Curl (Client URL, или "Клиентский URL") - это инструмент<a>командной строки</a>, предназначенный для передачи данных по различным сетевым протоколам. Он помогает разработчикам, системным администраторам и другим специалистам выполнять<a>HTTP-запросы</a>, загружать файлы, тестировать<a>API</a>и решать множество задач по отладке веб-приложений.</p>
8 <p>Давайте сразу проверим Curl в действии. Для этого откройте на своём компьютере терминал, скопируйте следующую команду и нажмите Enter:</p>
8 <p>Давайте сразу проверим Curl в действии. Для этого откройте на своём компьютере терминал, скопируйте следующую команду и нажмите Enter:</p>
9 curl https://httpbin.org/ip<p>После ввода команды Curl отправит<a>GET-запрос</a>на сервис<a>httpbin.org</a>, который обработает запрос и вернёт ваш текущий<a>IP-адрес</a>в <a>формате JSON</a>:</p>
9 curl https://httpbin.org/ip<p>После ввода команды Curl отправит<a>GET-запрос</a>на сервис<a>httpbin.org</a>, который обработает запрос и вернёт ваш текущий<a>IP-адрес</a>в <a>формате JSON</a>:</p>
10 C:\Users\user&gt;curl https://httpbin.org/ip { "origin": "95.165.134.78" }<p>Похожим образом Curl позволяет легко взаимодействовать с различными API и получать нужную информацию. Теперь поговорим об этом подробней.</p>
10 C:\Users\user&gt;curl https://httpbin.org/ip { "origin": "95.165.134.78" }<p>Похожим образом Curl позволяет легко взаимодействовать с различными API и получать нужную информацию. Теперь поговорим об этом подробней.</p>
11 <p><strong>Содержание</strong></p>
11 <p><strong>Содержание</strong></p>
12 <ul><li><a>Описание Curl</a></li>
12 <ul><li><a>Описание Curl</a></li>
13 <li><a>Установка и запуск</a></li>
13 <li><a>Установка и запуск</a></li>
14 <li><a>Синтаксис команд</a></li>
14 <li><a>Синтаксис команд</a></li>
15 <li><a>Использование Curl</a></li>
15 <li><a>Использование Curl</a></li>
16 </ul><ul><li><a>GET-запрос</a></li>
16 </ul><ul><li><a>GET-запрос</a></li>
17 <li><a>POST-запрос</a></li>
17 <li><a>POST-запрос</a></li>
18 <li><a>Скачивание файла</a></li>
18 <li><a>Скачивание файла</a></li>
19 <li><a>Вывод заголовков</a></li>
19 <li><a>Вывод заголовков</a></li>
20 <li><a>Аутентификация</a></li>
20 <li><a>Аутентификация</a></li>
21 <li><a>Следование редиректам</a></li>
21 <li><a>Следование редиректам</a></li>
22 <li><a>Загрузка файла</a></li>
22 <li><a>Загрузка файла</a></li>
23 </ul><ul><li><a>Подборка ресурсов для работы с Curl</a></li>
23 </ul><ul><li><a>Подборка ресурсов для работы с Curl</a></li>
24 </ul><p>В 1997 году шведский программист<a>Даниэль Стенберг</a><a>разработал</a>утилиту httpget - инструмент для загрузки валютных курсов через IRC-бота. Если вы хотели узнать текущий курс доллара, процесс выглядел примерно так:</p>
24 </ul><p>В 1997 году шведский программист<a>Даниэль Стенберг</a><a>разработал</a>утилиту httpget - инструмент для загрузки валютных курсов через IRC-бота. Если вы хотели узнать текущий курс доллара, процесс выглядел примерно так:</p>
25 <ul><li>Бот подключался к сайту с актуальными курсами валют.</li>
25 <ul><li>Бот подключался к сайту с актуальными курсами валют.</li>
26 <li>Программа httpget загружала страницу и извлекала нужные данные о курсе доллара. Например, 1 USD = 30 RUB ?</li>
26 <li>Программа httpget загружала страницу и извлекала нужные данные о курсе доллара. Например, 1 USD = 30 RUB ?</li>
27 <li>Затем она передавала эту информацию IRC-боту, который отвечал на ваш запрос в IRC-чате.</li>
27 <li>Затем она передавала эту информацию IRC-боту, который отвечал на ваш запрос в IRC-чате.</li>
28 </ul><p>Проект привлёк внимание многих разработчиков, поскольку решал актуальную проблему того времени - загрузку данных из интернета. До появления httpget разработчикам приходилось создавать отдельные скрипты для каждого случая получения данных. Программа позволяла получить нужную информацию всего несколькими простыми командами.</p>
28 </ul><p>Проект привлёк внимание многих разработчиков, поскольку решал актуальную проблему того времени - загрузку данных из интернета. До появления httpget разработчикам приходилось создавать отдельные скрипты для каждого случая получения данных. Программа позволяла получить нужную информацию всего несколькими простыми командами.</p>
29 <p>Со временем проект HTTPget сменил название на Urlget, а затем на Curl. Сегодня Curl - это кросс-платформенная утилита командной строки, которая позволяет передавать или загружать данные с сервера, устанавливая подключение через различные протоколы: <a>HTTP</a>, <a>HTTPS</a>, <a>FTP</a>, <a>SFTP</a>, <a>TFTP</a>, <a>SCP</a>, <a>Telnet</a>, <a>DICT</a>, <a>LDAP</a>, <a>POP3</a>,<a>IMAP</a>, <a>SMTP</a>и <a>другие</a>.</p>
29 <p>Со временем проект HTTPget сменил название на Urlget, а затем на Curl. Сегодня Curl - это кросс-платформенная утилита командной строки, которая позволяет передавать или загружать данные с сервера, устанавливая подключение через различные протоколы: <a>HTTP</a>, <a>HTTPS</a>, <a>FTP</a>, <a>SFTP</a>, <a>TFTP</a>, <a>SCP</a>, <a>Telnet</a>, <a>DICT</a>, <a>LDAP</a>, <a>POP3</a>,<a>IMAP</a>, <a>SMTP</a>и <a>другие</a>.</p>
30 <p>Сейчас, помимо Curl, существуют и другие инструменты для работы с HTTP-запросами. Вот некоторые из популярных:</p>
30 <p>Сейчас, помимо Curl, существуют и другие инструменты для работы с HTTP-запросами. Вот некоторые из популярных:</p>
31 <ul><li><a>Wget</a> - утилита командной строки для загрузки файлов, удобная для рекурсивной загрузки и работы с FTP-протоколом.</li>
31 <ul><li><a>Wget</a> - утилита командной строки для загрузки файлов, удобная для рекурсивной загрузки и работы с FTP-протоколом.</li>
32 <li><a>Postman</a> - графический инструмент для тестирования API. Он лучше Curl подходит для сложных запросов и визуализации ответов, однако уступает в гибкости при автоматизации задач.</li>
32 <li><a>Postman</a> - графический инструмент для тестирования API. Он лучше Curl подходит для сложных запросов и визуализации ответов, однако уступает в гибкости при автоматизации задач.</li>
33 <li><a>HTTPie</a> - это современный аналог Curl с упрощённым синтаксисом, цветным выводом результатов и менее широким набором функций.</li>
33 <li><a>HTTPie</a> - это современный аналог Curl с упрощённым синтаксисом, цветным выводом результатов и менее широким набором функций.</li>
34 <li><a>Axios</a> - это JavaScript-библиотека для выполнения HTTP-запросов. Она удобна для веб-разработки, но ограничена средой JavaScript: Axios можно использовать только в браузерах для HTTP-запросов на стороне клиента и в <a>Node.js</a>для запросов на стороне сервера.</li>
34 <li><a>Axios</a> - это JavaScript-библиотека для выполнения HTTP-запросов. Она удобна для веб-разработки, но ограничена средой JavaScript: Axios можно использовать только в браузерах для HTTP-запросов на стороне клиента и в <a>Node.js</a>для запросов на стороне сервера.</li>
35 </ul><p>Несмотря на множество альтернатив, Curl остаётся популярным инструментом благодаря своей универсальности, широкой поддержке протоколов и кросс-платформенности. Давайте перейдём к его установке.</p>
35 </ul><p>Несмотря на множество альтернатив, Curl остаётся популярным инструментом благодаря своей универсальности, широкой поддержке протоколов и кросс-платформенности. Давайте перейдём к его установке.</p>
36 <p>? <a>Возможности Curl и других бесплатных инструментов для передачи данных: сравнительная таблица</a></p>
36 <p>? <a>Возможности Curl и других бесплатных инструментов для передачи данных: сравнительная таблица</a></p>
37 <p>В современных операционных системах утилита Curl обычно установлена по умолчанию. Для проверки откройте терминал и введите команду:</p>
37 <p>В современных операционных системах утилита Curl обычно установлена по умолчанию. Для проверки откройте терминал и введите команду:</p>
38 curl --version<p>Должен отобразиться номер версии и поддерживаемые протоколы:</p>
38 curl --version<p>Должен отобразиться номер версии и поддерживаемые протоколы:</p>
39 Результат вывода после проверки версии Curl в командной строке.<em>Скриншот: Windows 10 / Skillbox Media</em><p>Если Curl не установлен, в терминале появится сообщение об ошибке:</p>
39 Результат вывода после проверки версии Curl в командной строке.<em>Скриншот: Windows 10 / Skillbox Media</em><p>Если Curl не установлен, в терминале появится сообщение об ошибке:</p>
40 'curl' is not recognized as an internal or external command, operable program or batch file.<p>Если вы видите подобное сообщение, значит, программа Curl недоступна и её нужно загрузить. Способ установки зависит от операционной системы.</p>
40 'curl' is not recognized as an internal or external command, operable program or batch file.<p>Если вы видите подобное сообщение, значит, программа Curl недоступна и её нужно загрузить. Способ установки зависит от операционной системы.</p>
41 - <p><strong>Если у вас macOS</strong>, установите менеджер пакетов<a>Homebrew</a>и выполните в терминале следующую команду:</p>
41 + <p><strong>Если у вас macOS</strong>, установите менеджер пакетов<a>Homebrew</a>и выполните в терминале следующую кманду:</p>
42 brew install curl<p>После завершения установки проверьте версию Curl:</p>
42 brew install curl<p>После завершения установки проверьте версию Curl:</p>
43 curl --version<p><strong>Если у вас Linux</strong>, то способ установки будет зависеть от дистрибутива. Для<a>Ubuntu</a>или<a>Debian</a>выполните последовательно следующие команды:</p>
43 curl --version<p><strong>Если у вас Linux</strong>, то способ установки будет зависеть от дистрибутива. Для<a>Ubuntu</a>или<a>Debian</a>выполните последовательно следующие команды:</p>
44 sudo apt-get update sudo apt-get install curl<p>Для<a>Fedora</a>:</p>
44 sudo apt-get update sudo apt-get install curl<p>Для<a>Fedora</a>:</p>
45 sudo dnf install curl<p>Для<a>CentOS</a>или<a>RHEL</a>:</p>
45 sudo dnf install curl<p>Для<a>CentOS</a>или<a>RHEL</a>:</p>
46 sudo yum install curl<p>Для<a>Arch Linux</a>:</p>
46 sudo yum install curl<p>Для<a>Arch Linux</a>:</p>
47 sudo pacman -S curl<p>После установки проверьте версию Curl командой:</p>
47 sudo pacman -S curl<p>После установки проверьте версию Curl командой:</p>
48 curl --version<p><strong>Если у вас Windows 10 или 11</strong>,<a>откройте PowerShell или командную строку от имени администратора</a>и установите Curl через менеджер пакетов:</p>
48 curl --version<p><strong>Если у вас Windows 10 или 11</strong>,<a>откройте PowerShell или командную строку от имени администратора</a>и установите Curl через менеджер пакетов:</p>
49 winget install curl<p>После установки перезапустите PowerShell или командную строку и проверьте установку:</p>
49 winget install curl<p>После установки перезапустите PowerShell или командную строку и проверьте установку:</p>
50 curl --version<p><strong>Если у вас Windows 7, 8 или 8.1</strong>, скачайте архив с утилитой с сайта<a>curl.se</a>через браузер<a>Pale Moon</a>. Современные браузеры могут не поддерживаться устаревшими версиями Windows или блокировать загрузку по соображениям безопасности. Pale Moon - это легковесный браузер, позволяющий загружать сторонние файлы без подобных ограничений.</p>
50 curl --version<p><strong>Если у вас Windows 7, 8 или 8.1</strong>, скачайте архив с утилитой с сайта<a>curl.se</a>через браузер<a>Pale Moon</a>. Современные браузеры могут не поддерживаться устаревшими версиями Windows или блокировать загрузку по соображениям безопасности. Pale Moon - это легковесный браузер, позволяющий загружать сторонние файлы без подобных ограничений.</p>
51 <p>После загрузки распакуйте папку из архива, переименуйте её в Curl и поместите в удобное место. Например, наша папка находится по пути: C:/Program Files/Curl. Затем откройте папку Curl, перейдите в подпапку bin и скопируйте полный путь к этому каталогу:</p>
51 <p>После загрузки распакуйте папку из архива, переименуйте её в Curl и поместите в удобное место. Например, наша папка находится по пути: C:/Program Files/Curl. Затем откройте папку Curl, перейдите в подпапку bin и скопируйте полный путь к этому каталогу:</p>
52 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Не выходя из проводника, щёлкните правой кнопкой мыши по разделу Компьютер и в появившемся меню выберите пункт Свойства:</p>
52 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Не выходя из проводника, щёлкните правой кнопкой мыши по разделу Компьютер и в появившемся меню выберите пункт Свойства:</p>
53 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Откроется информационное окно со сведениями о вашем компьютере. В левой панели щёлкните на пункт Дополнительные параметры системы:</p>
53 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Откроется информационное окно со сведениями о вашем компьютере. В левой панели щёлкните на пункт Дополнительные параметры системы:</p>
54 <em>Скриншот: Windows 7 / Skillbox Media</em><p>В открывшемся окне нажмите кнопку Переменные среды:</p>
54 <em>Скриншот: Windows 7 / Skillbox Media</em><p>В открывшемся окне нажмите кнопку Переменные среды:</p>
55 <em>Скриншот: Windows 7 / Skillbox Media</em><p>В разделе Системные переменные найдите пункт Path, выделите его и нажмите кнопку Изменить:</p>
55 <em>Скриншот: Windows 7 / Skillbox Media</em><p>В разделе Системные переменные найдите пункт Path, выделите его и нажмите кнопку Изменить:</p>
56 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Появится окно Изменение системной переменной, в котором вам нужна строка Значение переменной. Поставьте точку с запятой в конце текущего значения и сразу после него без пробела вставьте скопированный путь к каталогу. Нажмите ОК во всех открытых окнах и перезагрузите компьютер:</p>
56 <em>Скриншот: Windows 7 / Skillbox Media</em><p>Появится окно Изменение системной переменной, в котором вам нужна строка Значение переменной. Поставьте точку с запятой в конце текущего значения и сразу после него без пробела вставьте скопированный путь к каталогу. Нажмите ОК во всех открытых окнах и перезагрузите компьютер:</p>
57 <em>Скриншот: Windows 7 / Skillbox Media</em><p>После перезагрузки откройте командную строку и выполните проверку:</p>
57 <em>Скриншот: Windows 7 / Skillbox Media</em><p>После перезагрузки откройте командную строку и выполните проверку:</p>
58 curl --version<p>Если отобразилась версия утилиты, значит, всё правильно. Если появилось сообщение об ошибке или команда не распознана, попробуйте следующее:</p>
58 curl --version<p>Если отобразилась версия утилиты, значит, всё правильно. Если появилось сообщение об ошибке или команда не распознана, попробуйте следующее:</p>
59 <ul><li>Проверьте путь к Curl в разделе Переменные среды Path - убедитесь, что вы добавили его согласно инструкции.</li>
59 <ul><li>Проверьте путь к Curl в разделе Переменные среды Path - убедитесь, что вы добавили его согласно инструкции.</li>
60 <li>Перезапустите командную строку или PowerShell.</li>
60 <li>Перезапустите командную строку или PowerShell.</li>
61 <li>Если проблема сохраняется, перезагрузите компьютер ещё раз.</li>
61 <li>Если проблема сохраняется, перезагрузите компьютер ещё раз.</li>
62 <li>Если ничего не помогло, повторите процедуру установки.</li>
62 <li>Если ничего не помогло, повторите процедуру установки.</li>
63 </ul><p>Общий синтаксис Curl-команд выглядит следующим образом:</p>
63 </ul><p>Общий синтаксис Curl-команд выглядит следующим образом:</p>
64 curl [параметры] [URL]<p>Базовые команды можно выполнять без параметров по указанию URL-адреса. Например, с помощью следующей команды вы сможете загрузить HTML-структуру выбранного сайта в свой терминал:</p>
64 curl [параметры] [URL]<p>Базовые команды можно выполнять без параметров по указанию URL-адреса. Например, с помощью следующей команды вы сможете загрузить HTML-структуру выбранного сайта в свой терминал:</p>
65 # Замените example.com на адрес любого сайта curl https://www.example.com<p>Хотя параметры необязательны, они позволяют точно настроить поведение Curl и расширить его функциональность. Вот несколько частых параметров:</p>
65 # Замените example.com на адрес любого сайта curl https://www.example.com<p>Хотя параметры необязательны, они позволяют точно настроить поведение Curl и расширить его функциональность. Вот несколько частых параметров:</p>
66 <ul><li>-O: сохраняет скачиваемый файл с его оригинальным именем;</li>
66 <ul><li>-O: сохраняет скачиваемый файл с его оригинальным именем;</li>
67 <li>-o: сохраняет файл с указанным вами именем;</li>
67 <li>-o: сохраняет файл с указанным вами именем;</li>
68 <li>-I: получает только HTTP-заголовки ответа сервера;</li>
68 <li>-I: получает только HTTP-заголовки ответа сервера;</li>
69 <li>-L: следует редиректам. Например, если сайт перенаправляет запрос с http://example.com на https://example.com, curl с параметром -L автоматически выполнит это перенаправление.</li>
69 <li>-L: следует редиректам. Например, если сайт перенаправляет запрос с http://example.com на https://example.com, curl с параметром -L автоматически выполнит это перенаправление.</li>
70 </ul><p>Параметры всегда должны располагаться перед URL и их можно комбинировать. Вот пример комбинированной команды:</p>
70 </ul><p>Параметры всегда должны располагаться перед URL и их можно комбинировать. Вот пример комбинированной команды:</p>
71 curl -LO &lt;https://example.com/file.zip&gt; # Эта команда следует редиректам (-L) и сохраняет файл с оригинальным именем (-O)<p>Для просмотра всех доступных параметров используйте команду:</p>
71 curl -LO &lt;https://example.com/file.zip&gt; # Эта команда следует редиректам (-L) и сохраняет файл с оригинальным именем (-O)<p>Для просмотра всех доступных параметров используйте команду:</p>
72 curl --help all<p>В следующем разделе мы рассмотрим основные сценарии использования Curl и попрактикуемся применять команды с различными параметрами.</p>
72 curl --help all<p>В следующем разделе мы рассмотрим основные сценарии использования Curl и попрактикуемся применять команды с различными параметрами.</p>
73 <p>Рассмотрим команды для основных сценариев использования Curl:</p>
73 <p>Рассмотрим команды для основных сценариев использования Curl:</p>
74 <ul><li>GET-запрос: curl https://example.com</li>
74 <ul><li>GET-запрос: curl https://example.com</li>
75 <li>POST-запрос: curl -X POST -d "data" https://example.com</li>
75 <li>POST-запрос: curl -X POST -d "data" https://example.com</li>
76 <li>Скачивание файла: curl -O https://example.com/file.zip</li>
76 <li>Скачивание файла: curl -O https://example.com/file.zip</li>
77 <li>Вывод заголовков: curl -I https://example.com</li>
77 <li>Вывод заголовков: curl -I https://example.com</li>
78 <li>Аутентификация: curl -u username:password https://example.com</li>
78 <li>Аутентификация: curl -u username:password https://example.com</li>
79 <li>Следование редиректам: curl -L https://example.com</li>
79 <li>Следование редиректам: curl -L https://example.com</li>
80 <li>Загрузка файла: curl -T file.txt https://example.com/upload</li>
80 <li>Загрузка файла: curl -T file.txt https://example.com/upload</li>
81 </ul><p>Для закрепления этих команд воспользуемся сервисом<a>JSONPlaceholder</a>. Это бесплатный онлайн REST API, предоставляющий фиктивные данные для обучения и тестирования. Данный ресурс позволяет практиковаться в работе с API без настройки собственного сервера.</p>
81 </ul><p>Для закрепления этих команд воспользуемся сервисом<a>JSONPlaceholder</a>. Это бесплатный онлайн REST API, предоставляющий фиктивные данные для обучения и тестирования. Данный ресурс позволяет практиковаться в работе с API без настройки собственного сервера.</p>
82 <p>Эта команда позволяет получать данные с сервера без их изменения. С её помощью вы можете просматривать содержимое ресурса, проверять доступность API или проводить отладку приложения.</p>
82 <p>Эта команда позволяет получать данные с сервера без их изменения. С её помощью вы можете просматривать содержимое ресурса, проверять доступность API или проводить отладку приложения.</p>
83 <p>Отправим GET-запрос для получения информации о посте:</p>
83 <p>Отправим GET-запрос для получения информации о посте:</p>
84 curl https://jsonplaceholder.typicode.com/posts/1<p>В результате мы получим примерно такой JSON-объект:</p>
84 curl https://jsonplaceholder.typicode.com/posts/1<p>В результате мы получим примерно такой JSON-объект:</p>
85 { "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" }<p>В ответе содержится информация о посте: идентификатор пользователя (userId), идентификатор поста (id), заголовок (title) и содержание (body). Поскольку сервис JSONPlaceholder предоставляет фиктивные данные, содержимое вашего поста может отличаться от приведённого примера.</p>
85 { "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" }<p>В ответе содержится информация о посте: идентификатор пользователя (userId), идентификатор поста (id), заголовок (title) и содержание (body). Поскольку сервис JSONPlaceholder предоставляет фиктивные данные, содержимое вашего поста может отличаться от приведённого примера.</p>
86 <p>Эта команда применяется для передачи данных на сервер при заполнении веб-форм, отправке сообщений или создании новых записей в базе данных.</p>
86 <p>Эта команда применяется для передачи данных на сервер при заполнении веб-форм, отправке сообщений или создании новых записей в базе данных.</p>
87 <p>Создадим новый пост и отправим на сервер следующие JSON-данные:</p>
87 <p>Создадим новый пост и отправим на сервер следующие JSON-данные:</p>
88 { "title": "Заголовок поста", "body": "Здесь мы добавляем содержание поста", "userId": 1 }<p>Выполним Curl-команду:</p>
88 { "title": "Заголовок поста", "body": "Здесь мы добавляем содержание поста", "userId": 1 }<p>Выполним Curl-команду:</p>
89 curl -X POST -H "Content-Type: application/json" -d "{\"title\": \"Заголовок поста\", \"body\": \"Здесь мы добавляем содержание поста\", \"userId\": 1}" "https://jsonplaceholder.typicode.com/posts"<p>После обработки запроса сервер вернёт ответ, в котором содержится информация о созданном посте с его уникальным идентификатором:</p>
89 curl -X POST -H "Content-Type: application/json" -d "{\"title\": \"Заголовок поста\", \"body\": \"Здесь мы добавляем содержание поста\", \"userId\": 1}" "https://jsonplaceholder.typicode.com/posts"<p>После обработки запроса сервер вернёт ответ, в котором содержится информация о созданном посте с его уникальным идентификатором:</p>
90 { "title": "Заголовок поста", "body": "Здесь мы добавляем содержание поста", "userId": 1, "id": 101 }<p>Эта команда позволяет сохранить полученные данные в файл на вашем компьютере. Это удобно при работе с большими объёмами данных или когда требуется дальнейшая обработка полученной информации.</p>
90 { "title": "Заголовок поста", "body": "Здесь мы добавляем содержание поста", "userId": 1, "id": 101 }<p>Эта команда позволяет сохранить полученные данные в файл на вашем компьютере. Это удобно при работе с большими объёмами данных или когда требуется дальнейшая обработка полученной информации.</p>
91 <p>Сохраним JSON-ответ в файл post.json в нашей текущей директории:</p>
91 <p>Сохраним JSON-ответ в файл post.json в нашей текущей директории:</p>
92 curl -o post.json https://jsonplaceholder.typicode.com/posts/1<p>Результат вывода:</p>
92 curl -o post.json https://jsonplaceholder.typicode.com/posts/1<p>Результат вывода:</p>
93 C:\Users\user&gt;curl -o post.json https://jsonplaceholder.typicode.com/posts/1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 292 100 292 0 0 380 0 --:--:-- --:--:-- --:--:-- 382<p>Файл post.json сохранён в директории C:\Users\user. Вывод также содержит статистику загрузки данных:</p>
93 C:\Users\user&gt;curl -o post.json https://jsonplaceholder.typicode.com/posts/1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 292 100 292 0 0 380 0 --:--:-- --:--:-- --:--:-- 382<p>Файл post.json сохранён в директории C:\Users\user. Вывод также содержит статистику загрузки данных:</p>
94 <ul><li>Общий размер файла: 292 байта.</li>
94 <ul><li>Общий размер файла: 292 байта.</li>
95 <li>Процент загрузки: 100%.</li>
95 <li>Процент загрузки: 100%.</li>
96 <li>Скорость загрузки: 380 байт/с.</li>
96 <li>Скорость загрузки: 380 байт/с.</li>
97 <li>Время выполнения: мгновенно (--:--:--).</li>
97 <li>Время выполнения: мгновенно (--:--:--).</li>
98 </ul><p>Эта команда позволяет получить заголовки HTTP-ответов без тела сообщения. Это полезно для проверки статуса ответа, типа содержимого, заголовков кэширования и других метаданных с запрашиваемого ресурса.</p>
98 </ul><p>Эта команда позволяет получить заголовки HTTP-ответов без тела сообщения. Это полезно для проверки статуса ответа, типа содержимого, заголовков кэширования и других метаданных с запрашиваемого ресурса.</p>
99 <p>Отправим запрос для получения HTTP-заголовков из нашего сервиса:</p>
99 <p>Отправим запрос для получения HTTP-заголовков из нашего сервиса:</p>
100 curl -I https://jsonplaceholder.typicode.com/posts/1<p>Пример ответа:</p>
100 curl -I https://jsonplaceholder.typicode.com/posts/1<p>Пример ответа:</p>
101 HTTP/1.1 200 OK Date: Wed, 23 Oct 2024 07:34:44 GMT Content-Type: application/json; charset=utf-8 Content-Length: 292 Connection: keep-alive Report-To: {"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1729551695&amp;sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&amp;s=T06zv%2Bip6vp%2FcW6OahKqDwFYY1PQhd6eXYmDv1DMf3g%3D"}]} Reporting-Endpoints: heroku-nel=https://nel.heroku.com/reports?ts=1729551695&amp;sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&amp;s=T06zv%2Bip6vp%2FcW6OahKqDwFYY1PQhd6eXYmDv1DMf3g%3D Nel: {"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]} X-Powered-By: Express X-Ratelimit-Limit: 1000 X-Ratelimit-Remaining: 999 X-Ratelimit-Reset: 1729551747 Vary: Origin, Accept-Encoding Access-Control-Allow-Credentials: true Cache-Control: max-age=43200 Pragma: no-cache Expires: -1 X-Content-Type-Options: nosniff Etag: W/"124-yiKdLzqO5gfBrJFrcdJ8Yq0LGnU" Via: 1.1 vegur CF-Cache-Status: HIT Age: 1983 Accept-Ranges: bytes Server: cloudflare CF-RAY: 8d700bdd4a385b4f-VIE alt-svc: h3=":443"; ma=86400 server-timing: cfL4;desc="?proto=TCP&amp;rtt=25362&amp;sent=5&amp;recv=6&amp;lost=0&amp;retrans=0&amp;sent_bytes=3130&amp;recv_bytes=510&amp;delivery_rate=144240&amp;cwnd=252&amp;unsent_bytes=0&amp;cid=748ae82f39ab1e32&amp;ts=71&amp;x=0"<p>Этот вывод содержит важную информацию для анализа ответов API и отладки запросов. В нём есть статус ответа (200 OK), тип содержимого (например, application/json), длина контента, а также заголовки кэширования, безопасности и ограничения скорости. Такие сведения помогают разработчикам лучше понять взаимодействие с сервером и выявить потенциальные проблемы.</p>
101 HTTP/1.1 200 OK Date: Wed, 23 Oct 2024 07:34:44 GMT Content-Type: application/json; charset=utf-8 Content-Length: 292 Connection: keep-alive Report-To: {"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1729551695&amp;sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&amp;s=T06zv%2Bip6vp%2FcW6OahKqDwFYY1PQhd6eXYmDv1DMf3g%3D"}]} Reporting-Endpoints: heroku-nel=https://nel.heroku.com/reports?ts=1729551695&amp;sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&amp;s=T06zv%2Bip6vp%2FcW6OahKqDwFYY1PQhd6eXYmDv1DMf3g%3D Nel: {"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]} X-Powered-By: Express X-Ratelimit-Limit: 1000 X-Ratelimit-Remaining: 999 X-Ratelimit-Reset: 1729551747 Vary: Origin, Accept-Encoding Access-Control-Allow-Credentials: true Cache-Control: max-age=43200 Pragma: no-cache Expires: -1 X-Content-Type-Options: nosniff Etag: W/"124-yiKdLzqO5gfBrJFrcdJ8Yq0LGnU" Via: 1.1 vegur CF-Cache-Status: HIT Age: 1983 Accept-Ranges: bytes Server: cloudflare CF-RAY: 8d700bdd4a385b4f-VIE alt-svc: h3=":443"; ma=86400 server-timing: cfL4;desc="?proto=TCP&amp;rtt=25362&amp;sent=5&amp;recv=6&amp;lost=0&amp;retrans=0&amp;sent_bytes=3130&amp;recv_bytes=510&amp;delivery_rate=144240&amp;cwnd=252&amp;unsent_bytes=0&amp;cid=748ae82f39ab1e32&amp;ts=71&amp;x=0"<p>Этот вывод содержит важную информацию для анализа ответов API и отладки запросов. В нём есть статус ответа (200 OK), тип содержимого (например, application/json), длина контента, а также заголовки кэширования, безопасности и ограничения скорости. Такие сведения помогают разработчикам лучше понять взаимодействие с сервером и выявить потенциальные проблемы.</p>
102 <p>Аутентификация обеспечивает доступ к частным или защищённым ресурсам. Сервис JSONPlaceholder не требует аутентификации, однако вы можете выполнить команду, демонстрирующую передачу данных при работе с защищёнными API. В нашем примере сервер вернёт список постов, а в реальном сценарии такой запрос открыл бы доступ к закрытому ресурсу:</p>
102 <p>Аутентификация обеспечивает доступ к частным или защищённым ресурсам. Сервис JSONPlaceholder не требует аутентификации, однако вы можете выполнить команду, демонстрирующую передачу данных при работе с защищёнными API. В нашем примере сервер вернёт список постов, а в реальном сценарии такой запрос открыл бы доступ к закрытому ресурсу:</p>
103 curl -u username:password https://jsonplaceholder.typicode.com/posts<p>Редиректы полезны при работе с URL-адресами, которые могут перенаправлять на другие ресурсы. JSONPlaceholder не использует редиректы, поэтому команда ниже эмулирует этот процесс, позволяя Curl автоматически следовать по цепочке переадресаций сайтов. При реальном запросе вы получите конечный ресурс после различных перенаправлений:</p>
103 curl -u username:password https://jsonplaceholder.typicode.com/posts<p>Редиректы полезны при работе с URL-адресами, которые могут перенаправлять на другие ресурсы. JSONPlaceholder не использует редиректы, поэтому команда ниже эмулирует этот процесс, позволяя Curl автоматически следовать по цепочке переадресаций сайтов. При реальном запросе вы получите конечный ресурс после различных перенаправлений:</p>
104 curl -L https://jsonplaceholder.typicode.com/posts/1<p>Вы можете отправлять POST-запросы для передачи больших объёмов данных или заранее подготовленной информации. Создадим файл newpost.json и сразу отправим его содержимое на JSONPlaceholder.</p>
104 curl -L https://jsonplaceholder.typicode.com/posts/1<p>Вы можете отправлять POST-запросы для передачи больших объёмов данных или заранее подготовленной информации. Создадим файл newpost.json и сразу отправим его содержимое на JSONPlaceholder.</p>
105 <p>Добавим кодировку UTF-8, чтобы избежать ошибок при отображении данных на русском языке:</p>
105 <p>Добавим кодировку UTF-8, чтобы избежать ошибок при отображении данных на русском языке:</p>
106 chcp 65001<p>Создадим файл newpost.json:</p>
106 chcp 65001<p>Создадим файл newpost.json:</p>
107 echo {"title": "Загруженный пост", "body": "Содержимое поста", "userId": 1} &gt; newpost.json curl -X POST -H "Content-Type: application/json" -d @newpost.json https://jsonplaceholder.typicode.com/posts<p>Получаем ответ от сервера, подтверждающий выполнение запроса:</p>
107 echo {"title": "Загруженный пост", "body": "Содержимое поста", "userId": 1} &gt; newpost.json curl -X POST -H "Content-Type: application/json" -d @newpost.json https://jsonplaceholder.typicode.com/posts<p>Получаем ответ от сервера, подтверждающий выполнение запроса:</p>
108 C:\Users\user&gt;curl -X POST -H "Content-Type: application/json" -d @newpost.json https://jsonplaceholder.typicode.com/posts { "title": "Загруженный пост", "body": "Содержимое поста", "userId": 1, "id": 101 }<p>Вы познакомились с возможностями Curl, и, если считаете, что этот инструмент может пригодиться в работе, рекомендуем следующие ресурсы:</p>
108 C:\Users\user&gt;curl -X POST -H "Content-Type: application/json" -d @newpost.json https://jsonplaceholder.typicode.com/posts { "title": "Загруженный пост", "body": "Содержимое поста", "userId": 1, "id": 101 }<p>Вы познакомились с возможностями Curl, и, если считаете, что этот инструмент может пригодиться в работе, рекомендуем следующие ресурсы:</p>
109 <ul><li><a>Everything curl</a> - бесплатная онлайн-версия книги от создателя Curl, в которой он подробно рассказывает об устройстве технологии.</li>
109 <ul><li><a>Everything curl</a> - бесплатная онлайн-версия книги от создателя Curl, в которой он подробно рассказывает об устройстве технологии.</li>
110 <li><a>Официальная документация</a>с описанием всех опций и команд Curl.</li>
110 <li><a>Официальная документация</a>с описанием всех опций и команд Curl.</li>
111 <li><a>Блог Даниэля Стенберга</a>, где он часто пишет о Curl и смежных технологиях.</li>
111 <li><a>Блог Даниэля Стенберга</a>, где он часто пишет о Curl и смежных технологиях.</li>
112 <li><a>GitHub-репозиторий Curl</a> - позволяет отслеживать разработку проекта, сообщать о проблемах и вносить свой вклад в развитие Curl.</li>
112 <li><a>GitHub-репозиторий Curl</a> - позволяет отслеживать разработку проекта, сообщать о проблемах и вносить свой вклад в развитие Curl.</li>
113 <li><a>Curl Сookbook</a> - сборник практических примеров использования Curl для решения различных задач.</li>
113 <li><a>Curl Сookbook</a> - сборник практических примеров использования Curl для решения различных задач.</li>
114 </ul><a>Практический курс: "Профессия DevOps-инженер" Узнать о курсе</a>
114 </ul><a>Практический курс: "Профессия DevOps-инженер" Узнать о курсе</a>