Skip to main content

Чим Server Actions відрізняються від API Routes?

Server Actions і API Routes вирішують схоже завдання - виконання серверного коду, але роблять це по-різному і для різних сценаріїв. Головна відмінність - як і навіщо до них звертаються.


Як вони працюють концептуально

API Routes

API Route - це звичайна HTTP-точка входу:

  • має URL (/api/users)
  • приймає HTTP-запит
  • повертає HTTP-відповідь
  • може бути викликана будь-ким, якщо доступ відкрито

Фронтенд і сервер спілкуються як два окремі світи.


Server Actions

Server Action - це серверна функція, а не endpoint:

  • у неї немає URL
  • до неї не можна звернутися напряму через HTTP
  • вона викликається лише з Next.js-застосунку
  • Next.js сам керує транспортом

UI не робить fetch - він викликає функцію.


Головна відмінність - шар взаємодії

КритерійServer ActionsAPI Routes
Спосіб викликуВиклик функціїHTTP-запит
URLНемаєЄ
fetchНе потрібенПотрібен
Підходить для публічного APIНіТак
Код потрапляє в клієнтНіНі
ТипізаціяСпільні типиПотрібно синхронізувати

Відмінності за призначенням

Коли підходять API Routes

  • потрібен публічний API
  • доступ має бути у:
    • мобільних застосунків
    • інших сервісів
    • зовнішніх клієнтів
  • потрібна явна робота з HTTP:
    • заголовки
    • статуси
    • cookies
    • middleware

API Routes - це повноцінний backend-endpoint.


Коли підходять Server Actions

  • дії ініціюються з інтерфейсу
  • логіка тісно пов'язана з UI
  • CRUD-операції
  • відправка форм
  • робота з БД і секретами
  • не потрібен зовнішній доступ

Server Actions - це «внутрішній серверний шар» застосунку.


Приклад різниці на практиці

API Routes:

  • фронтенд -> fetch('/api/create-user')
  • сервер -> req, res, HTTP-статуси

Server Actions:

  • форма -> action={createUser}
  • сервер -> звичайна функція

Логіка та сама, але шлях коротший.


Безпека і доступ

  • API Route можна:
    • випадково відкрити назовні
    • неправильно захистити
  • Server Action:
    • не має публічної адреси
    • не може бути викликана напряму
    • доступна лише із застосунку

Це знижує ризик помилок у доступі.


Важливе обмеження Server Actions

Server Actions не замінюють API Routes повністю.

Якщо потрібно:

  • віддавати дані зовнішнім клієнтам

  • будувати мікросервіси

  • працювати як backend для кількох застосунків

  • API Routes залишаються правильним вибором.


Коротко

API Routes - це HTTP-контракти для зовнішнього світу. Server Actions - це серверні функції для внутрішньої логіки UI.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.