Инструментарий для тестирования API

В процессе работы вы уже отправляли запросы к серверам — из браузера, если в ответ ожидалась HTML-страница, или из кода посредством библиотеки requests (когда ответ сервера надо было обработать в коде).

Для отправки запросов есть и специальные программы, заточенные под работу с API.

Такие программы можно условно разделить на консольные (такие как curl и httpie), встраиваемые (плагины для браузера или для редактора кода, например, REST Client для VS Code) и графические (Postman).

  • В консольных инструментах управление запросами происходит через командную строку со всеми особенностями этого подхода.
  • Встраиваемые инструменты — это дополнительные модули к программам. Они предоставляют графический интерфейс для работы с запросами прямо в текущем рабочем пространстве программы, в результате разработчику не приходится переключаться между приложениями.
  • Инструменты с собственным графическим интерфейсом — это самостоятельные программы, настольные приложения.

При разработке и тестировании вашего API вам обязательно понадобится один из этих инструментов. Не спешите устанавливать все сразу, выберите приложение, которое вам больше понравится. В дальнейшем курсе примеры запросов и ответов будут показаны в интерфейсе Postman, но решение, в какой из программ работать, остаётся за вами.

Не пожалейте времени и внимательно рассмотрите ответы тех API, к которым будут отправляться тестовые запросы в этом уроке. Там можно увидеть много интересного: структуру разных JSON, принципы вложенности и именования объектов и полей — всё то, о чём был разговор в прошлом уроке.

Тестирование API через httpie

httpie — консольный API-клиент. Для знакомства с ним нет нужды его устанавливать, Попробовать его в работе можно в веб-эмуляторе. Откройте его и для активации нажмите Enter или Return.

В «веб-консоли» появится заранее написанный PUT-запрос к эндпоинту pie.dev/put/; в запросе передаётся заголовок API-Key и параметр hello со значением world.

Нажатием на Enter отправьте запрос к тестовому API — и вы увидите ответ сервера:

PUT /put HTTP/1.1
API-Key: foo
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 18
Content-Type: application/json
Host: pie.dev
User-Agent: HTTPie/2.3.0

{
    "hello": "world"
}

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
CF-Cache-Status: DYNAMIC
CF-RAY: 6430db7dcc26924c-EWR
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json
Date: Tue, 20 Apr 2021 19:42:42 GMT
NEL: {"max_age":604800,"report_to":"cf-nel"}
Report-To: {"group":"cf-nel","endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=549OJOMAtbaQ9GN45r0Ct2rFBGJcMTFRCQvUGJZ8KCIm8noJzceAWKylg6S57AlrnpJhERD6GqiKby91%2FbU1ZX%2F0HwwYXxDM"}],"max_age":604800}
Server: cloudflare
Set-Cookie: __cfduid=d5a88aa57823d025fbe244fa2bdef122b1618947762; expires=Thu, 20-May-21 19:42:42 GMT; path=/; domain=.pie.dev; HttpOnly; SameSite=Lax
Transfer-Encoding: chunked
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
cf-request-id: 099267829e0000924c7d091000000001

{
    "args": {},
    "data": "{\"hello\": \"world\"}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "application/json, */*;q=0.5",
        "Accept-Encoding": "gzip",
        "Api-Key": "foo",
        "Cdn-Loop": "cloudflare",
        "Cf-Connecting-Ip": "192.241.133.165",
        "Cf-Ipcountry": "US",
        "Cf-Ray": "6430db7dcc26924c-FRA",
        "Cf-Request-Id": "099267829e0000924c7d091000000001",
        "Cf-Visitor": "{\"scheme\":\"http\"}",
        "Connection": "Keep-Alive",
        "Content-Length": "18",
        "Content-Type": "application/json",
        "Host": "pie.dev",
        "User-Agent": "HTTPie/2.3.0"
    },
    "json": {
        "hello": "world"
    },
    "origin": "192.241.133.165",
    "url": "http://pie.dev/put"
} 

Если этот консольный API-клиент придётся вам по душе — инструкцию по установке вы найдёте там же, на сайте разработчиков.

Тестирование API через расширение для VS Code

Расширение REST Client позволяет прямо из VS Code отправлять HTTP-запросы и в этом же интерфейсе просматривать ответы на них. Установка расширения стандартна: в строке поиска панели «Extensions» нужно ввести название плагина «REST Client»” и нажать кнопку “Install” («Установить»).

Можно потренироваться, отправляя запросы к бесплатному API проекта {JSON} Placeholder. Этот проект имитирует социальную сеть: в нём хранятся посты и комментарии к ним. На главной странице проекта есть примеры запросов, описание всех доступных ресурсов, эндпоинтов и методов.

Запросы в REST Client нужно сохранять в файле с расширением .http. Если вы решите поработать с этим плагином — после установки создайте в VS Code новый файл (например requests.http) и создайте в нём запрос:

# пример GET запроса
GET https://jsonplaceholder.typicode.com/posts/1 

В файле можно описать несколько разных запросов и отдельно выполнить любой из них. Запросы в файле отделяются друг от друга строками, содержащими три символа #.Добавьте в файл ещё один запрос, пусть это будет POST.POST-запросы в REST Client пишутся так:

###

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
    "title": "My Title",
    "body": "My text",
    "userId": 1
} 

Для отправки любого запроса нажмите над ним ссылку “SendRequest”. В правой части экрана вы увидите ответ сервера:

Файл с запросами можно сохранить в репозитории, и любой разработчик сможет отправить сохранённые запросы и посмотреть результат.

Тестирование API через Postman

Postman — популярный и удобный API-клиент, он умеет отправлять запросы и показывать ответы, сохраняет историю запросов и данные об аутентификации, позволяет проектировать и тестировать API.

Управлять запросами в Postman можно и через браузерное приложение, но для работы с локальным проектом потребуется скачать и установить программу на компьютер: работать через браузер с локальным IP 127.0.0.1 не получится, он не будет доступен.Скачайте Postman со страницы загрузки проекта и установите его на свою рабочую машину.

Установка Postman

Авторизуйтесь в приложении, это позволит работать в интерфейсе Workspace (системе для создания и сохранения запросов для каждого проекта по отдельности) и даст некоторые другие бонусы, например — хранение настроек и истории запросов в облаке.

Postman Workspace

Postman может сохранять запросы, ответы, токены и другую рабочую информацию; вы в любой момент можете одним кликом отправить заранее настроенный и сохранённый запрос. При работе с несколькими проектами удобно разделять эти данные, хранить данные каждого проекта отдельно.

Workspace — это своего рода окружение проекта, cпособ разделить настройки разных сервисов.

Например, вы тестировали сервис с котиками, установили для него токен аутентификации, сохранили примеры запросов, всё настроили — а потом вам пришлось перейти к тестированию другого проекта, с пёсиками например.

В такой ситуации Workspace в Postman позволит просто переключиться на другое окружение и создать там другие запросы и токены, относящиеся к новому проекту.На стартовой странице приложения выберите закладку “Workspace” и нажмите на “My Workspace” — это первое, предварительно созданное рабочее окружение. Его можно переименовать и настроить в нём запросы для своего проекта.

После нажатия на кнопку “My Workspace” откроется основной интерфейс Postman.

Главный экран делится на две части:

  • слева — список сохранённых запросов и история изменений, у вас их пока нет;
  • справа — рабочая область: тут можно создавать запросы и настраивать их.

Интерфейс может немного отличаться от скриншотов — это зависит от версии программы, но функциональность остаётся та же.

Чтобы создать запрос, кликните по кнопке «+» над рабочей областью.

Окно настройки запроса

Здесь можно указать и отредактировать любые настройки:

  • метод запроса;
  • URL, по которому нужно отправить запрос;
  • параметры запроса;
  • заголовки запроса;
  • тело запроса.

Теперь можно поупражняться.

У GitHub есть отлично документированное API, вот туда и отправьте тестовый GET запрос на получение данных аккаунта praktikum:

Скопировать код https://api.github.com/users/yandex-praktikum 

Если всё сделано как надо — ответ будет таким:

{
    "login": "yandex-praktikum",
    "id": 58176000,
    "node_id": "MDQ6VXNlcjU4MTc2O",
    "avatar_url": "https://avatars.githubusercontent.com/u/58176914?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/yandex-praktikum",
    "html_url": "https://github.com/yandex-praktikum",
    "followers_url": "https://api.github.com/users/yandex-praktikum/followers",
    "following_url": "https://api.github.com/users/yandex-praktikum/following{/other_user}",
    "gists_url": "https://api.github.com/users/yandex-praktikum/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/yandex-praktikum/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/yandex-praktikum/subscriptions",
    "organizations_url": "https://api.github.com/users/yandex-praktikum/orgs",
    "repos_url": "https://api.github.com/users/yandex-praktikum/repos",
    "events_url": "https://api.github.com/users/yandex-praktikum/events{/privacy}",
    "received_events_url": "https://api.github.com/users/yandex-praktikum/received_events",
    "type": "User",
    "site_admin": false,
    "name": null,
    "company": null,
    "blog": "",
    "location": null,
    "email": null,
    "hireable": null,
    "bio": null,
    "twitter_username": null,
    "public_repos": 6,
    "public_gists": 0,
    "followers": 90,
    "following": 0,
    "created_at": "2019-11-25T13:38:59Z",
    "updated_at": "2021-03-24T16:15:56Z"
} 

Данные аккаунтов на Github открыты, получить их может кто угодно. Запросите данные своего аккаунта:

https://api.github.com/users/<ваш-логин-на-гитхабе> 

Можно получить информацию и о конкретном репозитории в аккаунте: надо лишь покопаться в документации и найти нужный метод.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: