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

Curl HTTP API

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

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

Утилита 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-ответ.


Дополнительные материалы

  1. Что JavaScript-разработчику следует знать о Curl

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

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

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

Об обучении на Хекслете

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 25 апреля

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

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

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

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»