Чим 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 Actions | API 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.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.