CRUD в реальном времени с API Laravel с использованием WebSockets: подробное руководство

В этой статье мы рассмотрим, как создать приложение CRUD (создание, чтение, обновление, удаление) реального времени с использованием API Laravel и WebSockets. WebSockets обеспечивают двустороннюю связь между клиентом и сервером, что делает его идеальным выбором для создания приложений реального времени. Для достижения нашей цели мы будем использовать возможности Laravel WebSockets, Laravel Sanctum, Laravel Echo и Laravel Events.

Содержание:

  1. Настройка проекта Laravel

  2. Установка и настройка Laravel WebSockets

  3. Реализация аутентификации с помощью Laravel Sanctum

  4. Создание конечных точек CRUD API

  5. Трансляция событий с помощью Laravel Events и Laravel Echo

  6. Создание интерфейса CRUD реального времени

  7. Тестирование приложения CRUD реального времени

  8. Вывод

  9. Настройка проекта Laravel:
    Для начала создайте новый проект Laravel с помощью следующей команды:

composer create-project --prefer-dist laravel/laravel real-time-crud
  1. Установка и настройка Laravel WebSockets:
    Далее установите пакет Laravel WebSockets с помощью Composer:
composer require beyondcode/laravel-websockets

После установки опубликуйте файл конфигурации и перенесите необходимые таблицы базы данных:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate
  1. Реализация аутентификации с помощью Laravel Sanctum:
    Чтобы защитить конечные точки нашего API, мы будем использовать Laravel Sanctum. Установите пакет с помощью Composer:
composer require laravel/sanctum

Следуйте официальной документации Laravel Sanctum, чтобы настроить ее для своего проекта.

  1. Создание конечных точек 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);
}
  1. Трансляция событий с помощью 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
}
  1. Создание внешнего интерфейса CRUD в реальном времени.
    Создайте внешнее приложение, используя предпочитаемую вами платформу JavaScript (например, Vue.js, React.js). Настройте Laravel Echo для прослушивания событий и соответствующего обновления пользовательского интерфейса.

  2. Тестирование приложения CRUD в реальном времени.
    Протестируйте приложение, выполняя различные операции CRUD, и наблюдайте за обновлениями в реальном времени во внешнем интерфейсе.

В этой статье мы рассмотрели, как создать CRUD-приложение реального времени с использованием API Laravel и WebSockets. Мы использовали Laravel WebSockets, Laravel Sanctum, Laravel Echo и Laravel Events для обеспечения связи между клиентом и сервером в реальном времени. Следуя пошаговому руководству, вы сможете с легкостью создавать надежные и эффективные приложения реального времени.