Перші кроки з RESTful API у Laravel 11: Посібник для початківців

pic

Laravel 11 зробив створення RESTful API простішим, ніж будь-коли. Однак, як початківець, однією з перших труднощів, з якою ви можете зіткнутися, є визначення того, де прописати ваші маршрути API. У цій статті я проведу вас через процес, підкреслюючи поширені помилки початківців і показуючи, як створити просте CRUD (Create, Read, Update, Delete) API.

Передумови: Composer, PHP ≥ 8.2 і MySQL мають бути встановлені на вашому локальному комп'ютері.

Слідуйте за наведеними кроками, щоб створити базове CRUD API для управління продуктами.

Крок 1: Створення нового проекту Laravel

composer create-project laravel/laravel rest-api-example  
cd rest-api-example

Крок 2: Оновлення змінних бази даних у файлі конфігурації .env

DB_CONNECTION=mysql  
DB_HOST=127.0.0.1  
DB_PORT=3306  
DB_DATABASE=laravel_api  
DB_USERNAME=root  
DB_PASSWORD=

Крок 3: Створення моделі, контролера та міграції

Використовуйте наведену команду artisan, щоб одночасно створити модель Product, контролер і міграцію. Тут використовується флаг --api, щоб створити контролер, оптимізований для розробки API, без методів, необхідних для обробки видів. (виключаючи методи create і edit)

php artisan make:model Product -mc --api

Відкрийте файл міграції в database/migrations і визначте структуру вашої таблиці:

public function up(): void  
{  
 Schema::create('products', function (Blueprint $table) {  
 $table->id();  
 $table->string('name');  
 $table->text('description')->nullable();  
 $table->decimal('price', 8, 2);  
 $table->timestamps();  
 });  
}

Відкрийте файл моделі (app/Models/Product.php) і визначте властивість $fillable, щоб вона відповідала стовпцям таблиці у файлі міграції:

class Product extends Model  
{  
 use HasFactory;  

 protected $fillable = [  
 'name',  
 'description',  
 'price',  
 ];  
}

Крок 4: Виконання міграції

php artisan migrate

Крок 5: Визначення методів CRUD

Відкрийте файл ProductController.php в директорії app/Http/Controllers і визначте методи CRUD.

1. Отримання всіх продуктів

public function index()  
{  
 return response()->json(Product::all());  
}

2. Додавання нового продукту

public function store(Request $request)  
{  
 $product = Product::create($request->all());  
 return response()->json($product, 201);  
}

3. Показати один продукт

public function show($id)  
{  
 return response()->json(Product::find($id));  
}

4. Оновлення продукту

public function update(Request $request, $id)  
{  
 $product = Product::find($id);  
 $product->update($request->all());  
 return response()->json($product);  
}

5. Видалення продукту

public function destroy($id)  
{  
 Product::destroy($id);  
 return response()->json(null, 204);  
}

Крок 6: Включення підтримки API

Початківці можуть відчувати плутанину, намагаючись побудувати RESTful API у Laravel 11, оскільки файл api.php відсутній у папці routes. Це пов'язано з тим, що Laravel 11 введено модульну структуру, де підтримка API не включена за замовчуванням.
Нижче наведена команда, яка генерує файл routes/api.php та необхідну структуру директорій для створення API. Як тільки це буде зроблено, ви готові визначити маршрути і почати розробку свого RESTful API.

php artisan install:api

Крок 7: Реєстрація маршрутів у файлі api.php

Додайте наступні маршрути у файл routes/api.php.
Цей рядок коду автоматично налаштовує маршрути для всіх методів CRUD, визначених у контролері.

use App\Http\Controllers\ProductController;  

Route::apiResource('products', ProductController::class);

Ви можете переглянути цей список маршрутів у вашому додатку Laravel, виконавши наступну команду в терміналі:

php artisan route:list

Крок 8: Запуск додатку Laravel

php artisan serve

Ось список маршрутів, які будуть доступні:

Крок 9: Тестування API

Ви можете тестувати своє API за допомогою таких інструментів, як Postman або Insomnia. Ось кілька прикладів кінцевих точок:

  • GET: http://localhost:8000/api/products
  • POST: http://localhost:8000/api/products
  • GET: http://localhost:8000/api/products/{id}
  • PUT: http://localhost:8000/api/products/{id}
  • DELETE: http://localhost:8000/api/products/{id}

Тепер, коли у вас є базове розуміння, ви можете розширити цей приклад, додаючи:

  • Валідацію для забезпечення цілісності даних ваших запитів API.
  • Реалізацію автентифікації та авторизації для захисту ваших кінцевих точок.

Міцна екосистема Laravel і його багаті документації підтримають вас на цьому шляху.

Щасливого кодування!

Перекладено з: Getting your feet wet with RESTful APIs in Laravel 11: A Beginner’s Guide

Leave a Reply

Your email address will not be published. Required fields are marked *