Перевірка HTTP-методів у Laravel

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Laravel спрощує роботу з HTTP-методами в запитах, що робить обробку різних операцій у ваших додатках легкою та зрозумілою. Досліджуйте, як ефективно використовувати методи method() і isMethod() для створення гнучких контролерів, які адаптуються до типу запиту!

Laravel пропонує зручні методи для роботи з HTTP-методами вхідних запитів, що спрощує виконання різних операцій у ваших додатках. Методи method() та isMethod() дозволяють легко визначати та перевіряти типи запитів

Ця функціональність особливо важлива при створенні RESTful API або обробці складних форм, де різні HTTP-методи викликають різну бізнес-логіку. Вона корисна для створення універсальних контролерів, які можуть адаптувати свою поведінку в залежності від типу вхідного запиту

// Основна перевірка методу
$method = $request->method();  // Повертає 'GET', 'POST' тощо
if ($request->isMethod('post')) {
    // Обробка POST-запиту
}

Ось приклад гнучкого обробника ресурсів:

<?php
 
namespace App\Http\Controllers;
 
use App\Models\Resource;
use Illuminate\Http\Request;
 
class ResourceController extends Controller
{
    public function handle(Request $request, $id = null)
    {
        return match($request->method()) {
            'GET' => $this->handleGet($id),
            'POST' => $this->handleCreate($request),
            'PUT' => $this->handleUpdate($request, $id),
            'DELETE' => $this->handleDelete($id),
            default => response()->json(['error' => 'Метод не дозволений'], 405)
        };
    }
 
    private function handleGet($id = null)
    {
        return $id 
            ? Resource::with('metadata')->findOrFail($id) 
            : Resource::with('metadata')->latest()->paginate(20);
    }
 
    private function handleCreate(Request $request)
    {
        $resource = Resource::create($request->validated());
 
        return response()->json([
            'message' => 'Ресурс успішно створено',
            'resource' => $resource->load('metadata')
        ], 201);
    }
 
    private function handleUpdate(Request $request, $id)
    {
        $resource = Resource::findOrFail($id);
        $resource->update($request->validated());
        return response()->json([
            'message' => 'Ресурс успішно оновлено',
            'resource' => $resource->fresh()->load('metadata')
        ]);
    }
 
    private function handleDelete($id)
    {
        Resource::findOrFail($id)->delete();
 
        return response()->json(null, 204);
    }
}

Приклади взаємодії:

// GET /api/resources/1
{
    "id": 1,
    "name": "Приклад ресурсу",
    "status": "активний",
    "metadata": {
        "created_by": "john@example.com",
        "last_accessed": "2024-02-01T10:30:00Z"
    }
}
// PUT /api/resources/1 з недозволеним методом
{
    "error": "Метод не дозволений"
}

Методи method() та isMethod() забезпечують зручний спосіб реалізації логіки, специфічної для методів, без порушення організації коду

Популярні

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу