QA

Що таке REST API і як він працює

1574
читати 6 хв.
15.12.25

Структура

REST API що це? REST API — це набір правил для обміну даними між програмами через інтернет з використанням стандартних HTTP методів. Він дозволяє додаткам спілкуватися один з одним, відправляючи запити та отримуючи відповіді у зручному форматі, найчастіше JSON. REST API працює за принципом клієнт-серверної архітектури, де клієнт запитує дані, а сервер їх надає через певні точки доступу (endpoints).

Що таке REST API у розробці? Це фундаментальна технологія сучасного вебу, яка робить можливим існування мобільних додатків, веб-сервісів та інтеграцій між різними платформами. RESTful сервіси використовують стандартні HTTP методи запитів (GET, POST, PUT, DELETE) для виконання CRUD операцій — створення, читання, оновлення та видалення даних. Важлива особливість REST — це stateless (без стану), що означає, що кожен запит містить всю необхідну інформацію для його обробки.

Ключові переваги REST API:

  • Простота використання — базується на знайомих HTTP протоколах
  • Гнучкість — працює з будь-якими типами даних та форматами
  • Масштабованість — легко розширюється під зростаючі потреби
  • Незалежність — клієнт і сервер розвиваються окремо
  • Кешування — підвищує продуктивність за рахунок збереження відповідей

Що таке REST API і як він працює - фото №1

API що це простими словами

Уявіть, що ви в ресторані. Ви — це додаток (клієнт), кухня — це сервер з даними, а офіціант — це API. Ви не можете самі піти на кухню і приготувати страву, але ви можете сказати офіціанту, що хочете замовити. Офіціант передасть ваше замовлення на кухню, а потім принесе готову страву.

Саме так працює API (Application Programming Interface) — це посередник між вашим додатком та сервером. Коли ви відкриваєте додаток погоди на телефоні, він відправляє запит через API до сервера метеослужби. Сервер обробляє запит і повертає дані про погоду у вашому місті. Все це відбувається за частки секунди.

Історія з практики: Коли я тільки починав вивчати веб-розробку, я не розумів, навіщо потрібні API. Здавалося, що можна просто напряму звертатися до бази даних. Але коли я спробував створити мобільний додаток для свого веб-сайту, я зрозумів геніальність REST API. Один API обслуговував і веб-версію, і мобільний додаток, і навіть Telegram-бота. Не потрібно було писати окрему логіку для кожної платформи — все працювало через єдині endpoints.

Як працює REST API: покрокове пояснення

REST API функціонує за чіткою схемою взаємодії між клієнтом та сервером. Давайте розберемо цей процес детально:

1. Клієнт формує запит

Ваш додаток створює HTTP-запит, який включає:

  • URL адреса — куди відправляється запит (endpoint)
  • HTTP метод — що потрібно зробити (GET, POST, PUT, DELETE)
  • Headers заголовки запитів — додаткова інформація (тип контенту, токен авторизації)
  • Body тіло запиту — дані, які відправляються (для POST/PUT)

2. Запит відправляється на сервер

Браузер або додаток відправляє цей запит через інтернет на вказану адресу сервера. Все відбувається по протоколу HTTP/HTTPS.

3. Сервер обробляє запит

Сервер отримує запит, перевіряє authentication (авторизацію API), визначає, які дані потрібні, та виконує необхідні операції з базою даних.

4. Формування відповіді

Сервер збирає дані в JSON формат даних, додає status codes (коди відповідей) та headers, після чого відправляє відповідь назад клієнту.

5. Клієнт отримує та обробляє відповідь

Додаток отримує дані, перевіряє код відповіді (200 — успіх, 404 — не знайдено, 500 — помилка сервера) та використовує отриману інформацію для відображення користувачу.

REST API методи GET POST та інші

HTTP методи — це дієслова, які описують, яку дію ви хочете виконати з даними. Це основа CRUD операцій (Create, Read, Update, Delete):

HTTP метод CRUD операція Призначення Приклад використання Має body?
GET Read Отримання даних Отримати список користувачів Ні
POST Create Створення нових даних Створити нового користувача Так
PUT Update Повне оновлення Оновити всі дані користувача Так
PATCH Update Часткове оновлення Змінити тільки email користувача Так
DELETE Delete Видалення даних Видалити користувача Ні

Важливо розуміти: GET-запити повинні бути безпечними (не змінювати дані на сервері) та ідемпотентними (багаторазове виконання дає той самий результат). POST-запити створюють нові ресурси, тому повторне виконання створить дублікати.

Практичний кейс: Нещодавно мій студент робив проєкт інтернет-магазину. Він використовував POST для всього підряд — навіть для отримання списку товарів! Це серйозна помилка. GET призначений для читання, POST — для створення. Коли ми це виправили, додаток почав працювати швидше (браузер почав кешувати GET-запити) та логічніше.

REST API приклади: від теорії до практики

Теорія без практики — це як підручник з водіння без машини. Давайте подивимось на реальні приклади роботи з REST API.

Приклад 1: Простий GET-запит

// Отримуємо список користувачів
fetch('https://jsonplaceholder.typicode.com/users')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Помилка:', error));

Цей код робить запит до безкоштовного тестового API та виводить список користувачів. Метод fetch — це вбудований у JavaScript спосіб роботи з API.

Приклад 2: POST-запит з даними

// Створюємо нового користувача
const newUser = {
  name: 'Анна Коваленко',
  email: 'anna@example.com',
  phone: '+380501234567'
};

fetch('https://jsonplaceholder.typicode.com/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(newUser)
})
  .then(response => response.json())
  .then(data => console.log('Створено користувача:', data));

Тут ми відправляємо нові дані на сервер. Зверніть увагу на headers — ми вказуємо, що відправляємо JSON, та використовуємо JSON.stringify() для перетворення об’єкта в рядок.

REST API JavaScript приклади з обробкою помилок

async function getUserData(userId) {
  try {
    const response = await fetch(`https://api.example.com/users/${userId}`);
    
    // Перевіряємо status codes
    if (!response.ok) {
      throw new Error(`HTTP помилка! Статус: ${response.status}`);
    }
    
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Не вдалося отримати дані користувача:', error);
    return null;
  }
}

// Використання
getUserData(123).then(user => {
  if (user) {
    console.log('Користувач:', user.name);
  }
});

Цей приклад показує правильну обробку помилок та використання сучасного синтаксису async/await, який робить код більш читабельним.

Порада від практика: Завжди перевіряйте response.ok перед обробкою даних. Багато новачків пропускають цей крок і потім не розуміють, чому додаток ламається при помилках сервера.

Що таке REST API і як він працює - фото №2

REST API тестування Postman: інструмент для розробників

Postman — це швейцарський ніж для тестування API. Замість того, щоб писати код для кожного запиту, ви можете швидко протестувати всі endpoints у зручному графічному інтерфейсі.

Як почати роботу з Postman:

  1. Завантажте та встановіть Postman з офіційного сайту (безкоштовно)
  2. Створіть новий запит — натисніть “New” → “HTTP Request”
  3. Налаштуйте параметри запиту:
    • Введіть URL вашого API
    • Виберіть HTTP метод (GET, POST тощо)
    • Додайте headers при необхідності
    • Для POST/PUT додайте body з даними
  4. Відправте запит — натисніть “Send”
  5. Вивчіть відповідь — подивіться status code, час відповіді, отримані дані

Корисні фішки Postman для REST API для початківців:

  • Collections — групуйте пов’язані запити (всі endpoints вашого проєкту)
  • Environment variables — зберігайте токени та URL, щоб не вводити постійно
  • Tests — пишіть автоматичні перевірки відповідей
  • Pre-request Scripts — виконуйте код перед відправкою запиту
  • History — всі ваші запити зберігаються автоматично

Реальний кейс з практики: Коли я працював над проєктом для українського стартапу, бекенд-розробник постійно змінював структуру API. Замість того, щоб кожного разу переписувати код у додатку, я створив колекцію в Postman з усіма endpoints. Коли щось переставало працювати, я за 2 хвилини знаходив проблему в Postman, замість того щоб півгодини дебажити код.

Створення REST API з нуля: практичний посібник

Давайте створимо простий REST API на Node.js з Express. Це один з найпопулярніших стеків для створення RESTful сервісів.

Крок 1: Встановлення необхідних інструментів

# Ініціалізація проєкту
npm init -y

# Встановлення Express
npm install express

# Встановлення nodemon для автоперезавантаження
npm install --save-dev nodemon

Крок 2: Створення базового сервера (файл server.js)

const express = require('express');
const app = express();
const PORT = 3000;

// Middleware для обробки JSON
app.use(express.json());

// Тимчасова "база даних" (масив)
let users = [
  { id: 1, name: 'Олег', city: 'Київ' },
  { id: 2, name: 'Марія', city: 'Львів' }
];

// GET - отримати всіх користувачів
app.get('/api/users', (req, res) => {
  res.json(users);
});

// GET - отримати конкретного користувача
app.get('/api/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).json({ message: 'Користувач не знайдений' });
  res.json(user);
});

// POST - створити нового користувача
app.post('/api/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name,
    city: req.body.city
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

// PUT - оновити користувача
app.put('/api/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).json({ message: 'Користувач не знайдений' });
  
  user.name = req.body.name;
  user.city = req.body.city;
  res.json(user);
});

// DELETE - видалити користувача
app.delete('/api/users/:id', (req, res) => {
  const index = users.findIndex(u => u.id === parseInt(req.params.id));
  if (index === -1) return res.status(404).json({ message: 'Користувач не знайдений' });
  
  users.splice(index, 1);
  res.json({ message: 'Користувач видалений' });
});

app.listen(PORT, () => {
  console.log(`Сервер запущено на http://localhost:${PORT}`);
});

Крок 3: Запуск сервера

node server.js

Тепер ваш API доступний за адресою http://localhost:3000/api/users. Ви можете тестувати його в Postman або через браузер (для GET-запитів).

Важливі моменти при створенні REST API:

  • Завжди використовуйте правильні status codes (200, 201, 404, 500)
  • Валідуйте вхідні дані перед обробкою
  • Повертайте зрозумілі повідомлення про помилки
  • Документуйте ваші endpoints
  • Використовуйте версіонування API (наприклад, /api/v1/users)

Різниця між REST та SOAP: що обрати?

Коли я починав вивчати API, мене бентежила велика кількість термінів: REST, SOAP, GraphQL, gRPC… Давайте розберемось, чим REST відрізняється від SOAP — його головного “конкурента”.

Характеристика REST SOAP
Протокол Архітектурний стиль (використовує HTTP) Строгий протокол (може працювати через HTTP, SMTP, TCP)
Формат даних JSON, XML, HTML, plain text Тільки XML
Складність Простий, інтуїтивний Складний, багатослівний
Швидкість Швидше (легкі запити) Повільніше (важкі XML-документи)
Безпека HTTPS, OAuth, JWT WS-Security (вбудована безпека)
Використання Веб та мобільні додатки Корпоративні системи, фінанси, телеком

Коли використовувати REST:

  • Розробляєте веб або мобільний додаток
  • Потрібна висока продуктивність
  • Працюєте з публічним API
  • Важлива простота інтеграції
  • Більшість сучасних проєктів (близько 80% нових API)

Коли використовувати SOAP:

  • Працюєте з банківськими системами
  • Потрібні ACID-транзакції
  • Потрібна вбудована безпека на рівні протоколу
  • Інтегруєтесь з legacy-системами
  • Працюєте у строго регульованих галузях

Історія з життя: У 2023 році я консультував український банк, який хотів модернізувати свою систему. У них весь бекенд працював на SOAP — важкий, повільний, але надійний. Ми не стали повністю переходити на REST, а створили проміжний шар: всередині банк використовує SOAP для критичних операцій, а для мобільного додатку клієнтів ми зробили REST API-обгортку. Найкраще з двох світів!

Основи клієнт-серверної архітектури в REST

REST будується на принципі розділення клієнта та сервера. Це фундаментальна концепція, яку важливо зрозуміти.

Клієнт (Frontend):

  • Відповідає за інтерфейс користувача
  • Відправляє запити до сервера
  • Обробляє та відображає отримані дані
  • Може бути: веб-браузером, мобільним додатком, іншим сервером

Сервер (Backend):

  • Зберігає та керує даними
  • Обробляє бізнес-логіку
  • Відповідає на запити клієнта
  • Працює з базою даних

Переваги такого розділення:

  1. Незалежна розробка — фронтенд та бекенд команди працюють паралельно
  2. Перевикористання — один API обслуговує веб, мобільні додатки, IoT-пристрої
  3. Масштабування — можна масштабувати клієнт і сервер окремо
  4. Безпека — вся критична логіка на сервері, клієнт тільки відображає

Принцип Stateless у REST:

Кожен запит від клієнта повинен містити всю інформацію, необхідну для його обробки. Сервер не зберігає стан клієнта між запитами.

// Погано (stateful)
// Перший запит
POST /api/login
{ "username": "user", "password": "pass" }

// Другий запит (сервер "пам'ятає" користувача)
GET /api/profile

// Добре (stateless)
// Кожен запит містить токен авторизації
GET /api/profile
Headers: { "Authorization": "Bearer eyJhbGc..." }

Authentication авторизація API: захист ваших даних

Уявіть, що ваш API — це закрита вечірка. Authentication (аутентифікація) — це перевірка запрошення на вході. Authorization (авторизація) — це перевірка, чи можете ви увійти до VIP-зони.

Основні методи авторизації:

  1. API ключі — простий, але небезпечний для публічних API
  2. Bearer токени (JWT) — найпопулярніший метод
  3. OAuth 2.0 — для соціальних логінів (Google, Facebook)
  4. Basic Auth — логін/пароль у заголовку (тільки з HTTPS!)

Приклад з JWT (JSON Web Token):

// Логін та отримання токена
fetch('https://api.example.com/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: 'user@example.com',
    password: 'securePassword123'
  })
})
.then(response => response.json())
.then(data => {
  // Зберігаємо токен
  localStorage.setItem('token', data.token);
});

// Використання токена для захищених запитів
const token = localStorage.getItem('token');
fetch('https://api.example.com/user/profile', {
  headers: {
    'Authorization': `Bearer ${token}`
  }
})
.then(response => response.json())
.then(profile => console.log(profile));

Правила безпеки:

  • Ніколи не зберігайте токени у змінних або консолі
  • Використовуйте HTTPS для всіх API-запитів
  • Встановлюйте час життя токенів (зазвичай 15 хвилин – 1 година)
  • Реалізуйте refresh-токени для продовження сесії
  • Не передавайте чутливі дані в URL (тільки в body або headers)

Коди відповідей HTTP: що означають ці цифри

Status codes — це спосіб сервера сказати, як пройшов запит. Вони поділені на п’ять груп:

1xx — Інформаційні (рідко використовуються)

  • 100 Continue — сервер готовий приймати дані

2xx — Успіх

  • 200 OK — запит виконано успішно
  • 201 Created — ресурс створено (після POST)
  • 204 No Content — успішно, але немає даних для повернення (часто після DELETE)

3xx — Перенаправлення

  • 301 Moved Permanently — ресурс переїхав назавжди
  • 302 Found — тимчасове перенаправлення

4xx — Помилка клієнта

  • 400 Bad Request — неправильний запит (перевірте синтаксис)
  • 401 Unauthorized — потрібна авторизація
  • 403 Forbidden — доступ заборонено (навіть з авторизацією)
  • 404 Not Found — ресурс не знайдено
  • 429 Too Many Requests — перевищено ліміт запитів

5xx — Помилка сервера

  • 500 Internal Server Error — щось зламалося на сервері
  • 502 Bad Gateway — проблема з проміжним сервером
  • 503 Service Unavailable — сервер тимчасово недоступний

Практичний приклад обробки:

fetch('https://api.example.com/data')
  .then(response => {
    switch(response.status) {
      case 200:
        return response.json();
      case 401:
        throw new Error('Потрібна авторізація');
      case 404:
        throw new Error('Дані не знайдено');
      case 500:
        throw new Error('Помилка сервера, спробуйте пізніше');
      default:
        throw new Error(`Несподівана помилка: ${response.status}`);
    }
  })
  .then(data => console.log(data))
  .catch(error => console.error(error.message));

Мем з практики: “404 — твоє соціальне життя після того, як почав вчити програмування 😄”

Що таке REST API і як він працює - фото №3

 

Підсумуємо: ваш шлях до оволодіння REST API

Головне: REST API — це стандартний спосіб обміну даними між додатками через інтернет. Опанувати базові принципи можна за 2-4 тижні практики, а для створення власних API знадобиться 2-3 місяці вивчення бекенд-розробки. Знання REST API відкриває двері в 70% вакансій веб-розробки в Україні.

Що вам знадобиться для старту:

  • Час: 1-2 години щодня протягом місяця
  • Базові знання: HTML, CSS, JavaScript (рівень ES6)
  • Інструменти: VS Code, Postman, Node.js
  • Англійська: мінімум A2 для читання документації
  • Терпіння: готовність розібратися з помилками 400, 401, 404, 500

Покроковий план навчання:

  1. Тиждень 1: Теорія REST, HTTP методи, вивчення публічних API
  2. Тиждень 2: Практика з Postman, тестування різних endpoints
  3. Тиждень 3: JavaScript fetch API, створення простих запитів
  4. Тиждень 4: Створення власного REST API на Node.js/Express
  5. Тиждень 5-8: Просунуті теми (авторизація, валідація, документація)

Реальні перспективи на ринку України:

  • Через 1 місяць: Розуміння роботи з API, перші пет-проєкти
  • Через 3 місяці: Готовність до Junior Frontend з навичками API інтеграції
  • Через 6 місяців: Можливість створювати повноцінні REST API (Backend)
  • Зарплата: Junior Frontend — $500-800, Junior Backend — $600-1000

Ключові навички для резюме:

  • REST API інтеграція та тестування
  • Робота з HTTP методами (GET, POST, PUT, DELETE)
  • JSON обробка та валідація даних
  • Робота з Postman та документацією API
  • Розуміння клієнт-серверної архітектури
  • Базова робота з authentication (JWT, OAuth)

З чого почати прямо зараз:

  1. Сьогодні: Встановіть Postman та протестуйте безкоштовний API (jsonplaceholder.typicode.com)
  2. Цей тиждень: Створіть просту сторінку, яка отримує дані через fetch
  3. Цей місяць: Пройдіть курс по REST API на YouTube або freeCodeCamp
  4. Через місяць: Створіть свій перший REST API проєкт

Готові заглибитися у світ веб-розробки?

У школі DAN.IT ми навчаємо створенню REST API на практичних проєктах. Наші студенти створюють реальні сервіси з нуля — від простих To-Do додатків до складних систем з авторизацією та базами даних.

Запишіться на безкоштовну консультацію DAN.IT та дізнайтеся, який курс підійде саме вам: Frontend з акцентом на API інтеграцію або Full Stack зі створенням власних RESTful сервісів.

Пам’ятайте: 65% початківців розробників кидають навчання, зіткнувшись з першими 401 та 500 помилками. Не будьте серед них — кожна помилка робить вас сильнішими. Збережіть цю статтю в закладки, повертайтеся до прикладів коду, і через місяць ви будете здивовані своєму прогресу!

Ваш чек-лист для старту роботи з REST API

Теоретична база:

  • – Зрозуміти, що таке REST API і навіщо він потрібен
  • – Вивчити основні HTTP методи (GET, POST, PUT, DELETE)
  • – Розібратися з кодами відповідей (2xx, 4xx, 5xx)
  • – Зрозуміти принцип клієнт-серверної архітектури
  • – Вивчити JSON формат даних

Практичні навички:

  • – Встановити та налаштувати Postman
  • – Протестувати публічне API (наприклад, JSONPlaceholder)
  • – Написати перший GET-запит у JavaScript
  • – Створити POST-запит з відправкою даних
  • – Обробити помилки та різні status codes

Інструменти розробника:

  • – Встановити Node.js та npm
  • – Налаштувати VS Code з розширеннями (REST Client, Thunder Client)
  • – Вивчити Chrome DevTools → Network Tab
  • – Створити акаунт на GitHub для портфоліо

Перший проєкт:

  • – Обрати ідею (список завдань, погода, курси валют)
  • – Знайти підходяще публічне API
  • – Створити HTML/CSS інтерфейс
  • – Інтегрувати API запити
  • – Опублікувати на GitHub Pages

Готові до наступного рівня? Запишіться на безкоштовний пробний урок у DAN.IT та створіть свій перший повноцінний проєкт з REST API під керівництвом досвідченого ментора!

Почніть свій шлях у веб-розробці сьогодні!

REST API — це фундамент сучасного вебу. Кожен додаток, яким ви користуєтесь щодня — Instagram, YouTube, Netflix — працює на REST API. Опанувавши цю технологію, ви відкриєте для себе безмежні можливості створення власних проєктів та отримаєте затребувану професію з гідною зарплатою.

Часті питання

Скільки часу потрібно, щоб навчитися працювати з REST API?

Базове розуміння REST API та вміння робити прості запити можна отримати за 2-3 тижні щоденної практики. Для створення власних RESTful сервісів знадобиться 2-3 місяці вивчення backend-розробки. Якщо ви вже знаєте JavaScript, опанувати роботу з API через fetch можна буквально за кілька днів.

Чи потрібно знати backend, щоб працювати з REST API?

Ні, необов’язково. Фронтенд-розробники постійно працюють з чужими API, не створюючи їх. Достатньо розуміти, як відправляти запити та обробляти відповіді. Однак базове розуміння серверної частини допоможе краще спілкуватися з backend-командою та швидше знаходити проблеми.

Яка різниця між GET та POST запитами?

GET використовується тільки для отримання даних і не повинен змінювати інформацію на сервері. POST створює нові дані. GET-запити не мають body (дані передаються в URL), їх можна кешувати та зберігати в історії браузера. POST-запити відправляють дані в тілі запиту, вони не кешуються та підходять для відправки конфіденційної інформації.

Що робити, якщо API повертає помилку 401 Unauthorized?

Помилка 401 означає, що потрібна авторизація. Перевірте: чи відправили ви токен авторизації в заголовку Authorization, чи дійсний ваш токен (чи не минув термін дії), чи правильно вказаний формат токена (зазвичай “Bearer YOUR_TOKEN”). Якщо використовуєте API-ключ, переконайтеся, що він активний і правильно вставлений.

Чи можна використовувати REST API безкоштовно для навчальних проєктів?

Так! Існує багато безкоштовних публічних API для навчання: JSONPlaceholder (фейкові дані), OpenWeatherMap (погода, безкоштовний тариф), The Movie Database (фільми), CoinGecko (криптовалюти), REST Countries (інформація про країни). Багато сервісів пропонують безкоштовні ліміти запитів (наприклад, 1000-10000 на місяць), яких вистачить для навчання.

Як захистити свій API від несанкціонованого доступу?

Основні методи захисту: використання токенів авторизації (JWT, OAuth), обмеження кількості запитів (rate limiting), валідація всіх вхідних даних, використання HTTPS для шифрування, CORS-політики для контролю доступу з різних доменів. Ніколи не зберігайте API-ключі в публічному коді на GitHub — використовуйте змінні оточення (.env файли).

У чому різниця між REST API та GraphQL?

REST повертає фіксовану структуру даних для кожного endpoint, GraphQL дозволяє запросити тільки потрібні поля. У REST потрібно робити кілька запитів для пов’язаних даних, у GraphQL можна отримати все за один запит. REST простіше у вивченні та підходить для більшості проєктів, GraphQL ефективніший для складних додатків з безліччю зв’язків між даними.

Як тестувати REST API без написання коду?

Використовуйте Postman — це графічний інструмент для тестування API. Ви просто вводите URL, обираєте метод (GET, POST тощо), додаєте дані якщо потрібно, і натискаєте Send. Також є альтернативи: Insomnia, Thunder Client (розширення для VS Code), curl у командному рядку. Усі ці інструменти безкоштовні та не потребують навичок програмування.

Чому мій fetch запит не працює, хоча в Postman API відповідає нормально?

Часті причини: CORS-політика (сервер блокує запити з вашого домену), неправильні заголовки (забули вказати Content-Type: application/json), помилки в async/await (не використовуєте await або try/catch), проблеми з обробкою Promise (немає .then або catch). Перевірте консоль браузера (F12) — там буде точний опис помилки.

Чи потрібно вивчати REST API, якщо я хочу стати frontend-розробником?

Абсолютно необхідно! Близько 90% вакансій frontend-розробника вимагають навичок роботи з API. Сучасні веб-додатки отримують дані з сервера через API, відправляють форми, завантажують зображення — все через REST API. Це одна з ключових навичок, без якої неможливо створити повноцінний інтерактивний додаток. Хороша новина — це не складно опанувати!