Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

CURL HTTP API

Для тестирования HTTP API одного браузера недостаточно. Браузером можно пользоваться только в самых простых ситуациях, где не нужно выставлять заголовков и делать отличные от GET запросы. Во всех остальных случаях нужны более мощные и специализированные инструменты.

Curl – это утилита командной строки, созданная аж в 1998 году. Она невероятно распространена и активно используется для скачивания файлов и в скриптах автоматизации. В документации по API у многих сервисов наряду с описанием есть примеры того, как выполнить запрос с использованием curl.

Она включена по умолчанию в состав некоторых операционных систем. Если у вас ее нет, то установите командой:

# macos
brew install curl
# ubuntu, windows (wsl)
apt install curl

Проверьте что все работает:

curl --version
curl 7.79.1

Самый простой способ использовать curl, выполнить GET-запрос к какому-то сайту:

curl https://code-basics.com
# Здесь появится тело ответа

В таком варианте curl распечатает на экран тело ответа, в нашем случае, HTML сайта. Его можно сохранить в файл выполнив перенаправление:

curl https://code-basics.com > code-basics.html

Если мы хотим посмотреть заголовки ответа, то запрос станет таким:

# --head - запрос с методом HEAD
curl --head https://code-basics.com

HTTP/2 200
date: Thu, 28 Apr 2022 22:19:39 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate

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

# -X, --request - задает метод запроса
# --head в данном случае игнорирует тело при выводе
curl --head -X GET https://code-basics.com

HTTP/2 200
date: Thu, 28 Apr 2022 22:19:39 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate

Если нужно увидеть не только ответ, но и запрос, то подойдет флаг --verbose, он покажет все включая тело ответа:

# Вывод сокращен
# -v, --verbose
curl -v https://code-basics.com
*   Trying 104.26.0.21:443...
* Connected to code-basics.com (104.26.0.21) port 443 (#0)
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
> GET / HTTP/2
> Host: code-basics.com
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
< HTTP/2 200
< date: Thu, 28 Apr 2022 22:24:06 GMT
< content-type: text/html; charset=utf-8
< referrer-policy: strict-origin-when-cross-origin
< cache-control: max-age=0, private, must-revalidate
<
# Тут еще и тело

Указание заголовков:

# -H, --header
curl -H "Content-Type: application/json" https://dummyjson.com/users

И тела в запросе:

# \ - нужен для указания многострочного кода в терминале
curl -X POST https://dummyjson.com/users/add \
   -H "Content-Type: application/json" \
   -d '{ "firstName": "Sam", "age": 100 }'

Самостоятельная работа

  1. Установите curl в вашу систему

  2. С помощью curl выполните CRUD операции для Todos

Обратите внимание, что на сервере изменения не выполняются, поэтому результатом успешного выполнения запроса будет HTTP ответ.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
30 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
30 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
30 июня 16 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
30 июня 10 месяцев

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»