Bruno — fetch! Або чи потрібна заміна Postman?

💡 Усі статті, обговорення, новини для початківців — в одному місці. Приєднуйтесь до Junior спільноти!

Давно не було на ДОУ статей для джунів.
бо їх всіх вже замінив AI і вони не потрібні

Вміння користуватись Postman стало дефолтним реквайрментом ще років з 10 тому. Важко про нього написати щось нове, але якщо ти вирішив вступити в АйТі зараз, і тобі ліньки питати в GPT, чому так сталось — читай далі. А якщо ти сеньор і все знаєш, заглянь у коменти, у мене є кілька запитань у кінці статті — поділись мудрістю.

Отже Postman — це програмний інструмент для виконання API запитів, та огляду результатів їх виконання в зручному інтерфейсі. Там можна зберігати колекції запитів з даними, писати скрипти обробки, тести і ще щось. Але в основному — це вікно де ти натискаєш кнопку і бачиш, чи працює ендпоїнт, чи ні.

З опису не виглядає що це прям якесь неймовірне ноу-хау. То як так сталось що ним всі користуються?

Ну, давай на хвилину повернемось у часи ЕПТ моніторів та процесорів серії Celeron.

Як отримати дані з мережевого сервісу?

  • червоноокі скажуть — curl з консолі
  • верстальник — напряму в IE
  • друг-хакір — порадить поставити Оперу і плагін до неї
  • лаборант в светрі — плагін до Eclipse

І все це були адекватні поради, які і сьогодні будуть працювати. Але ж є одне але ;)

Це все різні методи до яких треба звикати, і результат запиту в різних форматах. Верстальник заплаче побачивши просто дамп curl в тікеті, а хакір завиє з принтскріну IE. Як щось скопіювати з Eclipse не знає навіть сивочолий лаборант.

Еволюція будь-якої індустрії веде до стандартизації засобів виробництва. Postman переміг цю гонку з плагінами та IDE.

Але однієї стандартизації тут недостатньо. В 2025 вже є стандарт для роботи з ендпоїнтами — OpenAPI Specification — стандартизований, мово незалежний формат для опису RESTful API. Генерується автоматично на базі вихідного коду, його не треба постійно оновлювати після змін контракту, увімкнути просто, інтерфейс зрозумілий. Його наявність обов’язкова в усіх нормальних проектах ... але кнопку Send натискають у Postman. Чого не вистачає?

Колекція в Postman це — ще й дані, ендпоїнт збережений з тілом запиту. А часто буває так, що збережено декілька записів на один і той самий ендпоїнт з різним тілом. Та це ж перелік юзкейсів, випадків використання ендпоїнту. Перший — дефолтне тіло, далі — випадок неповних даних, а ще — варіант коли буде помилка.

Ні OpenAPI ні GraphQL sandbox таких можливостей не дає.

В принципі, якщо покопатись у другій сторінці результатів пошуку Гугла — можна там знайти httpYac. На базі якого можна і інтегрейшн тести писати і просто колекції юзкейсів вести, у нього навіть плагін до IDE є. Та чи хтось з читачів ДОУ чув про нього? Думаю що ні.

Топ аутсорс, і його структура, просто вимагала інструменту, який НЕ є частиною IDE. Адже розробники сидять в одній кімнаті, а QA в іншій. Між ними одночасно прірва і необхідність співпрацювати, та комунікувати стосовно функціоналу певних юзкейсів на базі стандартного інструменту. Ось так Postman став інструментом за замовчуванням.

І жили всі довго і щасливо допоки не настав лютий жовтень 2023.

З оновленням до 10ї версії, стала обов’язковою синхронізація усієї колекції з клаудом. І постав вибір: плати або тікай. Працівники відділу CyberSec і так бачили кошмари як продакшн аксесс-токени крадуться з ПК, а потім NotPetya шифрує весь кластер. А тепер, знаючи що сервери Postman Inc перетворились на ціль #1, гарячково видаляють його з усіх лептопів. От тільки не кажи що в твоїй колекції не збережені продакшн-токени\паролі.

Це був досить гучний бум в певній бульбашці, який відродив майже забуте питання:
А які альтернативи?

Якби не примусова синхронізація — шукати альтернативи не було б сенсу. Але зараз, після 3х років користування альтернативним додатком, мені здається що є і інша, більш грунтовна причина. Та про неї згодом.

Отже в моїй компанії альтернативою став Bruno

не, оцей Bruno www.usebruno.com

Додаток на Electron, який вже вміє майже все що і Postman, окрім того, що він розроблений виключно як локальний додаток, без мережевих функцій, та звісно без будь якої синхронізації колекції. Проект досить довго мляво використовувався, аж після жовтня — почав активно набирати аудиторію.

І ось зібралася команда на стендап і питає: «А як же нам синхронізуватися?». І відповідь була простою: «Залийте колекцію в Git компанії».
(В репу проекту чи окрему — в мене нема відповіді, скажіть свою думку в коментах)
CyberSec погодить, бо середовище і так внутрішне та захищене, користуватись ним усі вміють, до тог ж формат файлу колекцій Bruno — читабельний.

Це друга його відмінність від Postman. Від початку було закладено, що колекція описується читабельно, а не в JSON. Кожен реквест — окремий файл. І, о боже, зміну налаштувань для юзкейсів певного ендпоїнту можна відревʼювати! Це що, ми вже дійшли до специфікації юзкейсів? No way!

meta {
  name: test request trap
  type: http
  seq: 6
}
post {
  url: https://foo.site/{{id}}
  body: json
  auth: none
}
body:json {
  {
    "foo":"FFFFFFFFF"
  }
}

Отже заміна тулзи, змінила і формат роботи. З одного боку привнесла додаткову складність — менеджмент репозиторію з колекцією, необхідність задуматись перед додаванням і комітом змін. З іншого боку, під рукою текстовий довідник можливих кейсів використання ендпоїнтів, зміни якого контролюються та узгоджуються. Цей довідник відкритий для інших команд. Хочеш інтегруватись з сервісом — git clone, і вперед. Треба швидко знайти щось конкретне — просто пошук в гіті.

Це новий досвід, та чи вартий він відмови від Postman? От і хотілося б почути вашу думку.

Розкажи, якщо в тебе на проекті хтось відповідальний за postman колекцію, як вона розповсюджується та як контролюються зміни до неї?

Та і взагалі, чи треба дивитись кудись ще, якщо вже є індустріальний стандарт?

Який відсоток QA у твоїх командах є впевненим користувачем Git?

Де тримати API колекції, в репозитарії сервісу чи окремому репозитарії?

Чи працював ти так тісно з QA, щоб спати в одному спальнику комітити в один репозитарій?

—------------------------------------------------

На правах реклами:

Якщо ти дочитав аж сюди, то, напевно, любиш читати. А якщо так, то в тебе, мабуть, уже назбиралася ціла полиця прочитаних книжок. Тож чому б не поділитися ними з іншими?

Якраз для цього в мене є пет-проєкт: телеграм-бот для безкоштовного обміну книжками та збереження улюблених цитат.

t.me/booksharing_in_ua_bot

Можливо він стане тобі в пригоді. Також з радістю почитаю будь яку конструктивну критику щодо його функціонування.

—--------------------------------------------------

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter

Підписатись на коментарі