Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чим Server Actions відрізняються від API Routes?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Server Actions** і **API Routes** вирішують схоже завдання - виконання серверного коду, але роблять це **по-різному і для різних сценаріїв**. **Ключове:** головна відмінність - як і навіщо до них звертаються.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення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.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.