Создание API-контроллера в Laravel: методы и примеры

Создание контроллера API в Laravel — распространенная задача при создании веб-приложений, которым требуется серверный API. В этой статье мы рассмотрим различные методы создания контроллера API в Laravel с примерами кода.

Метод 1: использование команды Artisan
Laravel предоставляет удобную команду Artisan для создания нового контроллера API. Откройте терминал и выполните следующую команду:

php artisan make:controller ApiController --api

При этом будет создан новый файл с именем ApiController.phpв каталоге app/Http/Controllers. Опция --apiуказывает Laravel создать базовый контроллер API с изобретательными методами.

Метод 2: создание контроллера вручную
Вы также можете создать контроллер API вручную, создав новый файл в каталоге app/Http/Controllers. Вот пример:

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class ApiController extends Controller
{
    public function index()
    {
        // Retrieve all users
        $users = User::all();
        // Return the users as JSON
        return response()->json($users);
    }
    public function show($id)
    {
        // Retrieve a user by ID
        $user = User::find($id);
        // Return the user as JSON
        return response()->json($user);
    }
    public function store(Request $request)
    {
        // Validate the request data
        $validatedData = $request->validate([
            'name' => 'required|string',
            'email' => 'required|email|unique:users',
            'password' => 'required|string|min:8',
        ]);
        // Create a new user
        $user = User::create($validatedData);
        // Return the newly created user as JSON
        return response()->json($user, 201);
    }
    public function update(Request $request, $id)
    {
        // Validate the request data
        $validatedData = $request->validate([
            'name' => 'required|string',
            'email' => 'required|email|unique:users,email,' . $id,
            'password' => 'required|string|min:8',
        ]);
        // Find the user by ID
        $user = User::find($id);
        // Update the user
        $user->update($validatedData);
        // Return the updated user as JSON
        return response()->json($user);
    }
    public function destroy($id)
    {
        // Find the user by ID
        $user = User::find($id);
        // Delete the user
        $user->delete();
        // Return a success message
        return response()->json(['message' => 'User deleted']);
    }
}

В этом примере мы создали контроллер API с именем ApiControllerс методами для обработки операций CRUD в модели User. Метод indexизвлекает всех пользователей, метод showизвлекает одного пользователя по идентификатору, метод storeсоздает нового пользователя, метод Метод 11обновляет существующего пользователя, а метод destroyудаляет пользователя.

Чтобы использовать этот контроллер, вам необходимо определить соответствующие маршруты в файле routes/api.php.