Наш пример API прогноза погоды не позволяет использовать что-либо, кроме метода GET, поэтому для этого упражнения, чтобы использовать другие методы с curl, мы будем использовать API-интерфейс petstore. На самом деле мы не будем использовать интерфейс Swagger (о чем мы поговорим позже), на данный момент нам просто нужен API, с помощью которого мы можем создавать, обновлять и удалять контент.
В этом разделе мы создадим нового питомца с помощью Petstore API, обновим его, получим id питомца, удалим его, а затем попытаемся получить удаленного питомца.
Создание питомца
Для создания своего питомца, мы должны передать сообщение в формате JSON в теле запроса. Вместо того, чтобы пытаться кодировать JSON и передавать его в URL, мы сохраним JSON в файле и будем ссылаться на него.
Создаем текстовый файл и пишем в нем следующий код (эта информация будет передана в параметре -d
curl запроса):
{
"id": 123,
"category": {
"id": 123,
"name": "test"
},
"name": "fluffy",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "string"
}
],
"status": "available"
}
Меняем значение в первом id
и поменяем кличку с fluffy
на какое-нибудь другое
0
.Сохраняем наш файл в формате .json в каталоге, к которому можно легко получить доступ с терминала, например, в пользовательском каталоге (на Mac, Users / YOURUSERNAME - заменяем YOURUSERNAME реальным именем пользователя на вашем компьютере).
В Терминале /командной строке переходим в каталог с сохраненным файлом.
Для перехода по каталогам:
- На MacOS находим свой текущий рабочий каталог, набрав
pwd
. Переход на уровень выше при помощи командыcd ../
. Переход на уровень ниже при помощи командыcd pets
, гдеpets
- это имя каталога, в который нужно попасть. Вводимls
, чтобы просмотреть содержимое каталога. - На Windows смотрим в строку пути, чтобы понять в какой директории находимся. Переход на уровень выше при помощи команды
cd ../
. Переход на уровень ниже при помощи командыcd pets
, гдеpets
- это имя каталога, в который нужно попасть. Вводимdir
чтобы посмотреть список директорий в текущей директории.
После того, как вы перешли в Терминале/командной строке в каталог с сохраненным JSON файлом, создаем нашего питомца следующим curl запросом:
curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d @mypet.json "http://petstore.swagger.io/v2/pet"
Content-Type
указывает тип контента, представленного в теле запроса. Accept
указывает тип контента, который мы примем в ответе.
Ответ будет выглядеть примерно так:
{"id":891654,"category":{"id":4,"name":"testexecution"},"name":"SpeedDemon","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"}
Проверьте, что в ответе кличка именно вашего питомца.
Обновление питомца
А что если питомец не любит свое имя?
Изменим ему имя на другое используя метод обновления.
-
В файле .json сданными питомца изменим его имя.
-
Вместо метода POST используем метод PUT для обновления имени (в остальном запрос не меняется):
curl -X PUT --header "Content-Type: application/json" --header "Accept: application/json" -d @mypet.json "http://petstore.swagger.io/v2/pet"
В ответе будет новое имя питомца.
Получение имени питомца при помощи ID
Теперь узнаем имя питомца, передав его ID в конечную точку /pet/{petID}:
-
В файле .json скопируем значение id питомца.
-
В команде curl заменим
51231236
на id своего питомца и узнаем информацию о нем:
curl -X GET --header "Accept: application/json" "http://petstore.swagger.io/v2/pet/51231236"
В ответе будет информация о нашем питомце:
{"id":891654,"category":{"id":123,"name":"test"},"name":"Beatle","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"}
Можно отформатировать JSON, вставив его в инструмент форматирования JSON
{
"id": 891654,
"category": {
"id": 123,
"name": "test"
},
"name": "Beatle",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "string"
}
],
"status": "available"
}
Удаление питомца
“Извини, сынок, собака была бешеной, пришлось пристрелить” (© “Маска” фильм, 1994)
Для удаления питомца используем метод DELETE. В примере ниже меняем 5123123
на id своего питомца:
curl -X DELETE --header "Accept: application/json" "http://petstore.swagger.io/v2/pet/891654"
Теперь проверим, получилось удалить питомца. Используем метод GET в этой же команде
curl -X GET --header "Accept: application/json" "http://petstore.swagger.io/v2/pet/891654"
Ответ будет примерно таким:
{"code":1,"type":"error","message":"Pet not found"}
Этот пример позволил нам увидеть, как можно работать с curl для создания, чтения, обновления и удаления ресурсов. Эти четыре операции называются CRUD
и являются общими почти для каждого языка программирования.
Хотя Postman, вероятно, проще в использовании, curl используется на уровне мощности. Команды тестирования часто создают сложные тестовые сценарии, которые повторяют множество запросов curl.
Импорт curl в Postman
Можно импортировать команды curl в Postman выполняя следующее:
Открываем новую вкладку в Postman и нажимаем Import
в левом верхнем углу.
В диалоговом окне выбираем вкладку “Paste Raw Text” и вводим команду:
curl -X GET --header "Accept: application/json" "http://petstore.swagger.io/v2/pet/891654"
Указываем свой Id питомца и проверяем, что нет лишних пробелов.
Нажимаем на кнопку Import
Закрываем диалоговое окно, если не закрылось автоматически.
Нажимаем кнопку Send
(Если питомец был удален, то будет выдана ошибка “Pet not found”)
Экспорт Postman в curl
Можно экспортировать Postman в curl, выполнив следующие действия:
- При желании выбираем один из наших запросов API OpenWeatherMap в Postman.
- Нажимаем кнопку
Code
- Выбираем
curl
в выпадающем списке. - Копируем отрывок кода
curl -X GET \
'https://api.openweathermap.org/data/2.5/weather?lat=37.3565982&lon=-121.9689848&units=imperial&appid=fd4698c940c6d1da602a70ac34f0b147' \
-H 'Postman-Token: de0da6b7-1dbc-44d6-acc1-9741f05a7bf1' \
-H 'cache-control: no-cache'
Вы можете видеть, что Postman добавляет дополнительную информацию заголовка (-H 'Postman-Token: de0da6b7-1dbc-44d6-acc1-9741f05a7bf1' \ -H 'cache-control: no-cache'
) в запрос. Эта дополнительная информация заголовка не нужна и может быть удалена.
- Удаляем обратный слэш и разрывы строк. На Windows еще меняем одинарные кавычки на двойные.
- Вставляем команду curl в терминал и смотрим результат.
curl -X GET "https://api.openweathermap.org/data/2.5/weather?lat=37.3565982&lon=-121.9689848&units=imperial&appid=fd4698c940c6d1da602a70ac34f0b147"
Благодаря функциям импорта и кода Postman можно легко переключаться между Postman и curl.