0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: python, веб-пайтон, httpie</p>
1
<p>Теги: python, веб-пайтон, httpie</p>
2
<p>Часто при написании на Python<strong>веб-сервисов</strong>, предоставляющих REST API, хочется посмотреть, как сервис реагирует на различные HTTP-запросы. Конечно, можно мучиться с браузером или пользоваться curl, но когда интересующий запрос содержит нестандартные заголовки, тело в формате JSON, Cookie и прочее, длина командной строки для вызова curl становится устрашающей, а помнить нужные ключи вызова становится всё труднее.</p>
2
<p>Часто при написании на Python<strong>веб-сервисов</strong>, предоставляющих REST API, хочется посмотреть, как сервис реагирует на различные HTTP-запросы. Конечно, можно мучиться с браузером или пользоваться curl, но когда интересующий запрос содержит нестандартные заголовки, тело в формате JSON, Cookie и прочее, длина командной строки для вызова curl становится устрашающей, а помнить нужные ключи вызова становится всё труднее.</p>
3
<p>На выручку спешит инструмент под названием HTTPie. Он легко устанавливается в популярных ОС, так как сам по себе написан на Python.</p>
3
<p>На выручку спешит инструмент под названием HTTPie. Он легко устанавливается в популярных ОС, так как сам по себе написан на Python.</p>
4
<p>Синтаксис вызова HTTPie необычайно прост: устанавливаемый в систему бинарник называется http, командная строка для POST-запроса к API выглядит следующим образом:</p>
4
<p>Синтаксис вызова HTTPie необычайно прост: устанавливаемый в систему бинарник называется http, командная строка для POST-запроса к API выглядит следующим образом:</p>
5
http POST localhost:8080/api/method<p>Добавить в запрос дополнительный заголовок можно, дописав в конец строки название заголовка и через двоеточие - его значение, например, Authorization:secret-token.</p>
5
http POST localhost:8080/api/method<p>Добавить в запрос дополнительный заголовок можно, дописав в конец строки название заголовка и через двоеточие - его значение, например, Authorization:secret-token.</p>
6
<p>HTTPie примечателен читаемостью вывода. В отличие от curl, он не вываливает в терминал массу информации о SSL-сертификате.<strong>Убер-фича HTTPie</strong>- выделение цветом не только всех заголовков, но и тела ответа в соответствии с типом полученного документа, да ещё и корректная идентация тела ответа - JSON, слепленный сервером в одну длинную неудобочитаемую строку, превращается в красоту на прикреплённом скриншоте. К слову о SSL, если вы тестируете ваш веб-сервис у себя на localhost с самоподписанным сертификатом, заставить HTTPie не проверять его валидность можно ключом<strong>--verify=no</strong>.</p>
6
<p>HTTPie примечателен читаемостью вывода. В отличие от curl, он не вываливает в терминал массу информации о SSL-сертификате.<strong>Убер-фича HTTPie</strong>- выделение цветом не только всех заголовков, но и тела ответа в соответствии с типом полученного документа, да ещё и корректная идентация тела ответа - JSON, слепленный сервером в одну длинную неудобочитаемую строку, превращается в красоту на прикреплённом скриншоте. К слову о SSL, если вы тестируете ваш веб-сервис у себя на localhost с самоподписанным сертификатом, заставить HTTPie не проверять его валидность можно ключом<strong>--verify=no</strong>.</p>
7
<p>HTTPie способен "понимать" JSON не только в теле ответа, но и в качестве входных данных: передадим нашему API POST-запрос с телом, в котором находится JSON-объект с именем пользователя:</p>
7
<p>HTTPie способен "понимать" JSON не только в теле ответа, но и в качестве входных данных: передадим нашему API POST-запрос с телом, в котором находится JSON-объект с именем пользователя:</p>
8
http POST localhost:8080/api/register first_name=Vasya last_name=Pupkin<p>Также можно записать JSON-представление объекта в простой текстовый файл и передать его на стандартный ввод HTTPie следующим образом:</p>
8
http POST localhost:8080/api/register first_name=Vasya last_name=Pupkin<p>Также можно записать JSON-представление объекта в простой текстовый файл и передать его на стандартный ввод HTTPie следующим образом:</p>
9
http POST localhost:8080/api/register < vasya.txt<p>Комбинирование HTTPie с оператором перенаправления ввода-вывода | открывает богатые возможности его использования в скриптах в неинтерактивном режиме.</p>
9
http POST localhost:8080/api/register < vasya.txt<p>Комбинирование HTTPie с оператором перенаправления ввода-вывода | открывает богатые возможности его использования в скриптах в неинтерактивном режиме.</p>
10
10