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