Swagger API для автоматизатора

З базою даних в ZennoPoster можна працювати напряму використовуючи відповідний кубік no-code. Власне можна також використовувати аналог на C# щоб було зручніше працювати з одержаними даними. Проте, коли в сценарії назбирується багато таких викликів і потрібно в якомусь місці щось змінити – то я робота перетворюється в пекло!

І це не єдина проблема, з якою мені доводилось зустрічатись – бувало таке, що в якийсь момент часу будь-яке звернення до MySQL повертало мені помилку яка вказувала на перевищення кількості з’єднаннь з базою даних, тому що ZennoPoster відкривав з’єднання, але не закривав їх вчасно. Деякі розробники навіть придумали варіанти працювати з MySQL.dll напряму з C# кода, відкриваючи з’єднання і слідкуючи щоб його закрити при необхідності. А щоб уникати конфліктів – визови до бази супроводжуються синхронізацією потоків за допомогою lock.

Також розказують до можна працювати з базою даних за допомогою Entity Framework. І хоча ця бібліотека використовує Linq, самостійно формує оптимізовані запити до бази даних, але працювати з нею в ZennoPoster все ж таки як на мене не зручно. Можливо тому, що я поки що не бачу необхідності в її використанні.

Тому для себе я вирішив працювати з базою даних використовуючи API. Виглядати це повинно було приблизно так – на компьютер я устанавлював IIS, MySQL, PHP. Піднімав піднімав там звичайний сайт. Після чого з ZennoPoster відправляв GET запити, а назад одержував дані у вигляді json, які потім десеріалізував в об’єкт і продовжував з ним роботу. Коли потрібно було зберегти чи змінити дані в базі – то відправляв їх за допомогою запита типу POST. Власне до цього я дійшов в процесі, коли зрозумів що ZennoPoster буває дублює запити повторно (тепер звичайно я вже знаю про ідемпотентність, раніше це мені було не відомо). І покористувавшись якийсь час я зрозумів, що важко вручну описувати всі запити, і тестувати їх важко.

Рішенням моєї проблеми став Swagger. Виявилось, що можна просто описати функції на PHP, вказати до них коментарі з описом полів – і Swagger з цих коментарів зможе зібрати файл json. А коли його подати на вхід у Swagger UI, то можна буде навіть відправляти запити, дивитись результат їх виконання, і в цілому працювати з таким інтерфейсом зручніше і швидше. Ось так я прийшов до створення своїх Swagger API, які тепер створюю практично у всіх випадках коли пишу якісь сценарії для автоматизації своїх задач (тому що для замовників піднімати подібний функціонал не завжди получиться – все потребує часу, а замовникам не завжди хочеться нести додаткові затрати).

Для тестування API можна використовувати як запити ZennoPoster, так і PostMan, так і відправляти їх напряму з Swagger UI. І уже в C# коді не приходиться думати про SQL запити, багатопотоковість, конкурентність, параллелізм, lock, закриття з’єднаннь з базою даних.

Власне рекомендую однозначно використовувати цей інструмент для вирішення своїх проблем!

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *