ЗВІТИ З ЛАБОРАТОРНИХ РОБІТ

з дисципліни «WEB-ОРІЄНТОВАНІ ТЕХНОЛОГІЇ. BACKEND РОЗРОБКИ»
Виконавець: Студентка групи ІС-32 — Ковалюк Валерія Юріївна
Фото: Ковалюк Валерія Юріївна

Тема, мета та посилання

Тема: ДОКУМЕНТУВАННЯ АРІ ЗА ДОПОМОГОЮ SWAGGER. ДЕПЛОЙ NODE.JS-ДОДАТКУ. ПІДСУМКОВИЙ ПРОЄКТ: REST API З MYSQL.

Мета: Навчитися використовувати Swagger/OpenAPI для автоматичного документування REST API, інтегрувати Swagger UI у Node.js застосунок, створювати детальні описи маршрутів та моделей даних, а також опанувати процес деплою додатка на хмарну платформу (Render).

Посилання на виконані завдання:

  • Репозиторій власного веб-застосунку (GitHub): [https://github.com/lerakovaliuk/ecoplant-shop]
  • Власний веб-застосунок (Жива сторінка): [https://lerakovaliuk.github.io/ecoplant-shop/]
  • Репозиторій звітного документа (GitHub): [https://github.com/lerakovaliuk/IS-32_appRECORD-KovaliukValeriia-FIOT-2026]
  • Звітний документ (Жива сторінка): [https://lerakovaliuk.github.io/IS-32_appRECORD-KovaliukValeriia-FIOT-2026/]
  • Публічне посилання на розгорнутий API (Render): [https://ecoplant-api.onrender.com/api-docs/]

1. Теоретичний опис та архітектура рішення

У цій роботі було реалізовано фінальний етап розробки REST API — документування та публікація.

Swagger (OpenAPI Specification) було обрано як індустріальний стандарт для опису інтерфейсів. Це дозволяє іншим розробникам (наприклад, Front-end команді) бачити всі доступні маршрути, типи вхідних даних та коди відповідей без перегляду вихідного коду. Інтеграція відбулася за допомогою пакетів swagger-ui-express та swagger-jsdoc, де документація генерується безпосередньо з коментарів у коді.

Деплой (Deployment) — це процес розміщення локального коду на віддаленому сервері для доступу через Інтернет. Для цього було використано платформу Render, яка забезпечує автоматичний CI/CD (Continuous Integration / Continuous Deployment) — автоматичне оновлення сайту при кожному git push у репозиторій.


2. Реалізація завдань з програмним кодом

Завдання 3 та 4. Інтеграція та налаштування Swagger

У файлі server.js було налаштовано об’єкт конфігурації swaggerOptions та підключено Swagger UI.

const swaggerUi = require('swagger-ui-express');
const swaggerJsdoc = require('swagger-jsdoc');

const swaggerOptions = {
    definition: {
        openapi: '3.0.0',
        info: {
            title: 'EcoPlant API',
            version: '1.0.0',
            description: 'Документація REST API для магазину EcoPlant',
        },
        servers: [
            { url: `http://localhost:${PORT}`, description: 'Локальний сервер' }
        ],
    },
    apis: [path.join(__dirname, 'server.js')], // Шлях до файлу з коментарями
};

const swaggerSpec = swaggerJsdoc(swaggerOptions);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));

Завдання 4. Документування маршрутів (JSDoc)

Для кожного маршруту було додано YAML-опис у форматі JSDoc, включаючи опис requestBody та кодів відповідей.

/**
 * @swagger
 * /register:
 *   post:
 *     summary: Реєстрація користувача
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             properties:
 *               name:
 *                 type: string
 *               email:
 *                 type: string
 *               password:
 *                 type: string
 *               confirmPassword:
 *                 type: string
 *     responses:
 *       201:
 *         description: Користувача створено
 */

Завдання 6. Підготовка до деплою

Для коректної роботи на Render було змінено порт на динамічний та додано скрипт запуску в package.json.

// В server.js
const PORT = process.env.PORT || 3000;

// В package.json
"scripts": {
  "start": "node server.js"
}

3. Тестування та результати виконання (Скріншоти)

1. Інтерфейс Swagger UI

(Загальний вигляд сторінки документації зі списком усіх маршрутів API) Swagger UI

2. Тестування GET-запиту через Swagger

(Результат виконання запиту через кнопку “Try it out” та отримання списку товарів зі статусом 200 OK) Swagger Test GET

3. Тестування POST-запиту та валідації

(Демонстрація створення нового товару через інтерфейс Swagger) Swagger Test POST

4. Підтвердження успішного деплою (Render)

(Скріншот панелі керування Render зі статусом “Live” та логами успішного запуску) Render Live


4. Контрольні запитання (стислі відповіді)

  1. Що таке REST API? Це архітектурний стиль взаємодії клієнта і сервера, де ресурси ідентифікуються через URL, а маніпуляції здійснюються стандартними HTTP-методами (GET, POST, PUT, DELETE).
  2. Для чого використовується Swagger? Для візуалізації, тестування та документування API, що дозволяє працювати з маршрутами без використання зовнішніх інструментів на кшталт Postman.
  3. Що таке OpenAPI? Це мовонезалежний стандарт (специфікація) для опису RESTful API.
  4. Для чого потрібен swagger-jsdoc? Він дозволяє писати документацію OpenAPI у вигляді JSDoc-коментарів безпосередньо над програмним кодом маршрутів.
  5. Що таке деплой? Це розгортання та запуск програмного забезпечення на сервері, доступному для кінцевих користувачів.

Висновки

Під час виконання підсумкової лабораторної роботи було успішно завершено цикл розробки REST API додатка.

Набуті навички: Опановано інструменти автоматичного документування Swagger, що значно покращує професійну якість коду та зручність його підтримки. Вивчено стандарти OpenAPI для опису моделей та запитів. Отримано практичний досвід деплою Node.js додатків на платформу Render, включаючи налаштування CI/CD та роботу з портами середовища.

Узагальнення: Створений додаток “EcoPlant API” є повноцінним backend-рішенням, яке включає роботу з базою даних, систему безпеки, кешування та професійну документацію. Проєкт розгорнуто у хмарі та він доступний для зовнішніх запитів, що відповідає всім вимогам курсу “Web-орієнтовані технології. Backend розробки”.