В этой статье мы рассмотрим, как создать приложение CRUD (создание, чтение, обновление, удаление) реального времени с использованием API Laravel и WebSockets. WebSockets обеспечивают двустороннюю связь между клиентом и сервером, что делает его идеальным выбором для создания приложений реального времени. Для достижения нашей цели мы будем использовать возможности Laravel WebSockets, Laravel Sanctum, Laravel Echo и Laravel Events.
Содержание:
-
Настройка проекта Laravel
-
Установка и настройка Laravel WebSockets
-
Реализация аутентификации с помощью Laravel Sanctum
-
Создание конечных точек CRUD API
-
Трансляция событий с помощью Laravel Events и Laravel Echo
-
Создание интерфейса CRUD реального времени
-
Тестирование приложения CRUD реального времени
-
Вывод
-
Настройка проекта Laravel:
Для начала создайте новый проект Laravel с помощью следующей команды:
composer create-project --prefer-dist laravel/laravel real-time-crud
- Установка и настройка Laravel WebSockets:
Далее установите пакет Laravel WebSockets с помощью Composer:
composer require beyondcode/laravel-websockets
После установки опубликуйте файл конфигурации и перенесите необходимые таблицы базы данных:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate
- Реализация аутентификации с помощью Laravel Sanctum:
Чтобы защитить конечные точки нашего API, мы будем использовать Laravel Sanctum. Установите пакет с помощью Composer:
composer require laravel/sanctum
Следуйте официальной документации Laravel Sanctum, чтобы настроить ее для своего проекта.
- Создание конечных точек CRUD API:
Реализуйте функциональность CRUD, определив необходимые маршруты, контроллеры и модели. Например, создадим ресурс «Задача»:
// routes/api.php
Route::apiResource('tasks', 'TaskController');
// app/Http/Controllers/TaskController.php
public function store(Request $request)
{
$task = Task::create($request->all());
event(new TaskCreated($task));
return response()->json($task, 201);
}
- Трансляция событий с помощью Laravel Events и Laravel Echo:
Создавайте события и прослушиватели для трансляции обновлений в реальном времени. Например, давайте создадим событие и прослушиватель TaskCreated:
// app/Events/TaskCreated.php
class TaskCreated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $task;
public function __construct(Task $task)
{
$this->task = $task;
}
public function broadcastOn()
{
return new Channel('tasks');
}
}
// app/Listeners/SendTaskCreatedNotification.php
public function handle(TaskCreated $event)
{
// Handle the event and broadcast it to the frontend using Laravel Echo
}
-
Создание внешнего интерфейса CRUD в реальном времени.
Создайте внешнее приложение, используя предпочитаемую вами платформу JavaScript (например, Vue.js, React.js). Настройте Laravel Echo для прослушивания событий и соответствующего обновления пользовательского интерфейса. -
Тестирование приложения CRUD в реальном времени.
Протестируйте приложение, выполняя различные операции CRUD, и наблюдайте за обновлениями в реальном времени во внешнем интерфейсе.
В этой статье мы рассмотрели, как создать CRUD-приложение реального времени с использованием API Laravel и WebSockets. Мы использовали Laravel WebSockets, Laravel Sanctum, Laravel Echo и Laravel Events для обеспечения связи между клиентом и сервером в реальном времени. Следуя пошаговому руководству, вы сможете с легкостью создавать надежные и эффективные приложения реального времени.