Як перестати страждати і почати користуватися postman, i can do some code for you
Якщо на вашому рахунку вже є не одне розроблене додаток, що використовує REST API або самі створювали REST API, то напевно чули про Postman. У цій замітці хочу показати на кількох прикладах основну функціональність цього додатка для інших - тих, хто ще тільки починає займатися подібними проектами.
Створювали ви REST API? Або додатки, які використовують якийсь сторонній REST API? Якщо ви відповіли ствердно хоча б на одне з цих питань, то ви зрозумієте мою біль.
- Копіюємо потрібний запит з файлу
- Виконуємо запит на отримання token-а
- Копіюємо наступний запит з файлу
- Копіюємо token в новий запит
- Виконуємо запит на отримання даних
Пункти 3-5 можуть тривати ще кілька разів. Якщо це одноразова завдання, то проблем немає - виконав і забув. Однак, якщо ви використовуєте цей API в своєму додатку або самі є розробником API, то виконувати цю пачку запитів потрібно багато разів і робити це стає неприємно. У цей момент з'являється ВІН - Postman.
Творці Postman так описують свій проект:
Postman is the swiss army knife of API tools, allowing you to design, build, test, document and monitor your services, all in one place. *
Якщо коротко і по-російськи, то Postman - це комбайн, який дозволяє створювати і виконувати запити, документувати і моніторити ваші сервіси в одному місці.
На момент написання даної статті так само існувала версія для Google Chrome про яку піде мова в цій статті.
Базова функціональність задоволена проста: для виконання елементарних запитів досить:
- вибрати тип запиту
- вбити запит у відповідне поле ...
- ... або заповнити параметри через форму
- натиснути кнопку "Send"
Якщо все зроблено правильно, то в нижній частині вікна відобразиться результат виконаного запиту. У моєму випадку - запит до знайомого по попереднім постам API StackOverflow:
"Цей приклад примітивний і виконати це простіше в .eveloper-Tools-Fav-Browser%!" - скаже будь-хто, і я з цим погоджуся. Однак є як мінімум одне "але": цей запит можна зберегти і виконувати в майбутньому тільки змінюючи відповідні параметри. Більш того, запити можна групувати в колекції.
Сайт thetvdb.com пропонує можливість отримувати інформацію з різних серіалів за допомогою їх REST API. Однак, кожен запит повинен містити в заголовках отриманий при аутентифікації токен. Таким чином для того, щоб отримати інформацію по серіалу "Walking Dead" необхідно виконати два запити: отримання токена і пошук.
для отримання токена:
Заповнимо форму з заголовками як зазначено на зображенні вище і додамо в тіло запиту потрібний JSON і змінимо тип на raw (apikey, username і userkey можна отримати в особистому кабінеті після реєстрації на вищесказаному сайті):

На даний момент цього досить і можна знову тиснути на "Send". У відповідь на цей запит нам прийде JSON виду

У відповіді можна побачити JSON з отриманими серіалами: "The Walking Dead" і "Fear the Walking Dead" і їх короткими описами (2).
Щоб в подальшому можна було просто знайти ці запити - збережемо їх через меню "Save As ..." і додамо в колекцію "thetvdb":

Тепер в панелі зліва у нас буде нова колекція "thetvdb".
Попередній розділ показав, що можна спростити виконання рутинних дій зберігши запити і виконувати їх з заготовленими параметрами. Однак, після 2-3 одноманітних циклів:
- отримай токен
- Скопіюй токен в заголовок запиту
- Виконай запит до API
Це починає набридати.
І тут на допомогу приходить божевільна можливість Postman - виконання колекцій запитів з додаванням деяких невеликих (а можна і великих) скриптів.
Покращимо попередні запити таким чином, щоб при виконанні запиту на отримання токена нічого в наступні питання копіювати не треба було. Для цього є зв'язка з вкладки Tests, оточень (Environment) і змінних цього оточення.
По-перше, необхідно створити нове оточення в відповідному розділі:


Ніякі ключі додавати не будемо - зараз нам це не треба.
Створене оточення необхідно вибрати у відповідному випадаючому списку:

По-друге, відкриємо запит на отримання токена і перейдемо на вкладку Tests (див. Скріншот вище) і додамо наступний код:
Цей скрипт тільки перетворить рядок в JSON і зберігає в змінну поточного оточення "token" властивість token отриманого об'єкта.
Насправді ця вкладка призначена трохи для інших цілей (для написання тестів, раптово), але зараз про це говорити не будемо. Можливо, наступного разу доберуся і до цього.
По-третє, змінимо запит на отримання списку серіалів "Walking Dead" таким чином, щоб токен виходив з змінних оточення. Для цього достатньо в заголовку Authorization рядок токена замінити на сниппет>:
Можна перевірити, що все працює коректно виконавши всю колекцію запитів через відповідне меню колекції:

У меню, вибираємо потрібну колекцію і тиснемо велику синю кнопку "Start Test", яка виконає всі запити обраної колекції в тій послідовності, в якій вони збережені:

Як можна бачити на скріншоті всі запити завершилися вдало. На жаль, вміст відповідей цих запитів подивитися тут не можна. Воно й правильно - можливість виконання колекції запитів передбачається для тестування API в першу чергу.
І, наостанок, хотілося б згадати про одну дуже крутий фиче Postman - генерація коду із запиту. Список підтримуваних мов програмування (і не тільки) досить широкий: від OCaml і cURL до Swift і Go.
Приклад коду, згенерованого Postman для пошуку по StackOverflow на Golang:
І в добавок на Python з використанням бібліотеки Requests:
Як мені здається, код виглядає прийнятним більш ніж і цілком годиться як відправна точка для подальшого шліфування.
Висновок тільки один - якщо ви ще не використовуєте в повсякденній роботі Postman, то, ймовірно, скоро почнете. Якщо немає, то, мабуть, воно вам не треба і ви хочете ще більше страждань.
*) Postman - це швейцарський ніж для роботи з API, який дозволяє створювати, тестувати, документувати і моніторити ваші сервіси з одного місця.