Содержание:
- Введение
- Предварительные условия
- Давайте начнем с GET-запроса!
- Использование различных методов HTTP-запросов с помощью curl
- Заключение
Введение
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Данная статья предназначена для обучения основам взаимодействия REST API с помощью curl. Имейте в виду, что файлы и папки на вашем компьютере, скорее всего, будут отличаться от примеров в этой статье.
Предварительные условия
Для дальнейшей работы вам понадобятся:
- Доступ к Unix-терминалу в любой среде Linux или macOS.
- Знать, как открыть окно терминала.
- REST API для взаимодействия. В качестве примера в данной статье мы используем https://jsonplaceholder.typicode.com.
- Curl-утилита, установленная на вашем компьютере. На большинстве компьютеров с macOS и Linux она предустановлена. Если это не так, то вам необходимо ознакомиться с инструкциями по установке curl.
Давайте начнем с GET-запроса!
Curl — это «инструмент командной строки для передачи данных, заданных с помощью синтаксиса URL», что делает curl очень удобным инструментом для взаимодействия с REST API и другими веб-ресурсами. Curl имеет тысячи вариантов применения, но в данной статье мы рассмотрим лишь некоторые из них.
Допустим, у вас есть REST API, с которым вы хотите взаимодействовать. Например, https://jsonplaceholder.typicode.com/todos/1 возвращает данные в формате JSON, которые выглядят примерно так:
{ "userId": 1, "id": 1, "title": "delectus aut autem", "completed": false }
Хотя вы можете открыть URL из этого примера в веб-браузере, многие REST API не позволят сделать это. Давайте попробуем использовать curl.
В окне терминала введите curl https://jsonplaceholder.typicode.com/todos/1
и нажмите Enter. Вы должны получить результат, аналогичный этому:
Без каких-либо опций curl по умолчанию взаимодействует с сервером с помощью метода HTTP-запроса GET, который обычно используется только для получения данных.
Добавим опцию -o
, чтобы сохранить результат в выходной файл, а не показывать его в окне терминала. Наберите curl -o test.json https://jsonplaceholder.typicode.com/todos/1
и нажмите Enter:
При желании вы можете изучить более подробную информацию об этом виде взаимодействии. Для этого к любой команде curl можно добавить опцию -v
. Введите curl -v https://jsonplaceholder.typicode.com/todos/1
и нажмите Enter:
Использование различных методов HTTP-запросов с помощью curl
Теперь, когда вы знаете, как выполнить базовый запрос с помощью curl, мы можем попробовать использовать другие методы HTTP-запросов. Более подробно о методах HTTP-запросов можно прочитать в Википедии.
POST
Метод HTTP-запроса POST очень часто используется для создания или обновления данных на сервере. Для этого необходимо изучить несколько новых опций для команды curl
:
-X [HTTP_METHOD]
– Вы должны указать curl
, какой метод HTTP-запроса использовать. Опция -X
, за которой следует имя метода, позволяет это сделать.-H [HTTP_HEADER]
– При отправке данных на сервер нам необходимо указать серверу, как их интерпретировать. Например, это могут быть данные в формате JSON.-d [YOUR_DATA]
– Наконец, нам нужно указать, какие данные curl должен отправить на сервер.
Давайте объединим эти опции в одну команду:
curl -X POST -H 'Content-Type: application/json' -d '{"title": "foo", "body": "bar", "userId": 123}' https://jsonplaceholder.typicode.com/posts
Вы можете ввести или скопировать это в окно терминала и нажать Enter для отправки:
Это очень много данных, чтобы попытаться поместить их в одну команду. Вы можете отправить данные файлом, чтобы облегчить процесс передачи и сделаеть его более простым в будущем.
Создайте новый файл data.json
со следующими данными:
{ "title": "foo", "body": "bar", "userId": 123 }
Если вы успешно создали его, вы сможете объединить файл, как показано ниже:
Теперь вы можете использовать этот файл как часть команды curl
. Вместо того чтобы помещать данные в команду, можно ссылаться на файл с помощью опции -d @[FILENAME]
. Попробуйте это сделать, набрав curl -X POST -H 'Content-Type: application/json' -d @data.json https://jsonplaceholder.typicode.com/posts
и нажав Enter:
PUT
Метод HTTP-запроса PUT часто используется для обновления существующих на сервере данных при взаимодействии REST API. Аналогично примеру с POST, при использовании команды curl мы хотим задать метод, данные и их формат.
Попробуем обновить существующий элемент. Введите curl -X PUT -H 'Content-Type: application/json' -d '{"title": "foo_updated", "body": "bar_updated", "userId": 123}' https://jsonplaceholder.typicode.com/posts/1
и нажмите Enter:
Вы можете использовать файл с данными так же, как и в случае с методом HTTP-запроса POST, используя команду -d @[FILENAME]
.
DELETE
Если необходимо удалить данные с сервера, то при взаимодействии REST API вы, скорее всего, будете использовать метод HTTP-запроса DELETE. По сравнению с предыдущими примерами этот метод является более простым. С помощью параметра -X DELETE
задается метод HTTP-запроса DELETE и указывается URL конкретного сегмента для удаления. Попробуйте это сделать, набрав curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
и нажав Enter:
Стоит отметить, что многие REST API при использовании метода HTTP-запроса DELETE возвращают удаленные данные или демонстрируют осутствие данных.
OPTIONS
Иногда нам необходимо знать, какие типы запросов или данных мы можем отправлять на сервер. Для этого можно использовать метод HTTP-запроса OPTIONS.
При этом необходимо использовать опцию -v
, которая была изучена ранее. Это позволит отобразить более подробную информацию, и вы увидите «опции», которые поддерживает сервер.
Давайте попробуем сделать это, набрав curl -v -X OPTIONS https://jsonplaceholder.typicode.com/posts
и нажав Enter:
Прокрутив окно терминала, вы увидите информацию, подобную этой:
... < access-control-allow-credentials: true < access-control-allow-methods: GET,HEAD,PUT,PATCH,POST,DELETE ...
Это говорит о том, какие методы HTTP-запросов поддерживает сервер REST API. Также это свидетельствует о том, что сервер позволит вам пройти аутентификацию и использовать учетные данные.
Заключение
Теперь вы знаете об использовании curl
для взаимодействия с серверами и REST API. Это очень полезный инструмент.
Перевод статьи «How to use curl to test a REST API».