Livewire — это такая штука, которая должна спасать ленивых Laravel-разработчиков от написания фронтенда. Типа написал компонент, и всё «живое». Но кто-то где-то додумался использовать это диковинное чудо не только для рендеринга, а ещё и для API.
На первый взгляд — бред. Ты ведь не берёшь кухонный нож, чтобы ковырять в бетоне? Но в ИТ всегда найдётся чувак, который воткнёт нож в стену, и у него, мать его, получится. Так вот, Livewire как API — это именно такой кейс.
Как это выглядит на практике
Поставил Livewire:
composer require livewire/livewire
Сделал компонент:
php artisan make:livewire users Вылезли два файла: Users.php и users.blade.php.
Класс примерно такой:
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\User;
class Users extends Component
{
public function getUsers()
{
return User::all();
}
public function render()
{
return view('livewire.users');
}
}
Потом просто пробросил это в маршрут:
use App\Http\Livewire\Users;
Route::get('/api/users', [Users::class, 'getUsers']);
Вуаля. Ты вроде как сделал API через Livewire. На Postman всё шевелится, curl тоже отвечает.
Зачем вообще так делать?
Хороший вопрос. Честный ответ: почти никогда. Но иногда ситуация выглядит так:
- у тебя уже живой проект на Livewire, и лень городить отдельные контроллеры;
- данные нужны не фронту, а соседнему сервису;
- сроки горят, а «архитектура» на проекте звучит как мем.
В этих случаях Livewire как API выглядит как костыль, который странно, но работает.
Где тут грабли
Безопасность.
Ты можешь отдать наружу всё, что угодно. И если не проверишь авторизацию — пиши потом объяснительные, почему твои пользователи лежат в паблике.
Архитектура.
Через месяц ты забудешь, что у тебя «API через Livewire». Придёт другой разработчик и будет плеваться: «Кто этот идиот?» Ответ будет неприятный: это был ты.
Ошибки и валидация.
Тут всё по-старому. Либо используешь механизмы Laravel (валидацию, middleware), либо получаешь не API, а проходной двор.
Итог
Livewire для API — костыль, но иногда костыли реально держат конструкцию. Только не строй на них дом. Если нужен нормальный API — используй контроллеры, Laravel Resources, Sanctum, Passport и прочее добро. А Livewire оставь для кнопочек. И помни: если ты сам через месяц открываешь свой код и материшься — значит, сделал что-то очень «гениальное».
0 комментариев