Зачем использовать PUT и DELETE methods в Laravel, если можно GET?

Делаю todo приложение и для удаления записей столкнулся с такой реализацией:

// Blade
<span onclick="event.preventDefault();
            document.getElementById('form-delete-{{$todo->id}}')
            .submit();" 
      class="fas fa-trash px-2 text-red-500 cursor-pointer"></span>

<form style="display: none;" 
      id="{{'form-delete-'.$todo->id}}" 
      method="post" 
      action="{{route('todo.delete', $todo->id)}}">
    @csrf
    @method('delete')
</form>
// Route
Route::delete('/todos/{todo}/delete', 'App\Http\Controllers\TodoController@delete')
->name('todo.delete');

Все вполне себе работает, но зачем писать столько кода в blade, когда можно сделать так:

// Blade
<a href="{{route('todo.delete', $todo->id)}}" class="text-red-500 
                                                     cursor-pointer 
                                                     text-white">
    <span class="fas fa-trash px-2"></span>
</a>
// Route
Route::get('/todos/{todo}/delete', 'App\Http\Controllers\TodoController@delete')
->name('todo.delete');

И все также прекрасно работает! Контроллер не стал вставлять, там всего 1 банальная строчка удаления записи.
Всё что я сделал в Route, так это поменял метод с delete на get. Теперь в blade файле все смотрится куда лаконичнее.

Но в таком случае удаление записи делается посредством get и вроде как это не правильно...
Какие могут быть последствия такой "хитрости" и почему так неправильно делать? ...Или, все таки тоже правильно?


Ответы (1 шт):

Автор решения: Volodymyr Afanasiev

Все правильно, что работает) Есть определенные стандарты и методологи, и REST одна из них. Следовать ей или нет ваше дело, но при работе с командой лучше использовать придерживаться одной архитектуры, иначе тогда каждый начнет писать как хочет и начнется бардак.

Так то по сути и сахар можно держать в солонке, только вовремя другим сказать))

→ Ссылка