Edit me

Наш пример 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 на какое-нибудь другое

Сохраняем наш файл в формате .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

Нажимаем на кнопку 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.

🔙

Go next ➡