Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > В чем преимущество использования DELETE/PUT ?


Автор: Ripper 21.6.2013, 23:12
Использую фреймворк Laravel 4. В нем можно создать через консоль контроллер с дефолтными методами для операций CRUD. Дальше в роутинге прописываешь строчку - и все, все пути прописываются. Только вот скажем для удаления сущности нужно работать с DELETE, а для обновления с PUT.
Как поступает Laravel - создает форму, в которой в hidden поле написан метод. И если это PUT, то это на самом деле POST у которого hidden поле _method="PUT" ...

И все бы ничего, когда работаем с формами можно использовать стандартные хелперы чтобы нарисовать форму по заданному методу. Но вот например я хочу удалить сущность, и вариант "/api/files/15/delete" как GET запрос не пройдет. Я например сущности вывожу в таблице, где в каждой строчке хочу впихнуть ссылку на удаление - вместо ссылки нужно делать форму, плюс ко всему стили уже не как у ссылки и все такое.

Но в чем кайф от использования этих PUT/DELETE? 

Автор: Arantir 22.6.2013, 01:00
В самих по себе в них смысл в четкости и определенности. Например, можно было бы запретить своему приложению удалять что-либо по запросам, не соответствующим DELETE.

Поскольку ссылка — это всегда GET, то CRUD могут быть дифференцированы только при отправке формы. А поскольку в итоге получается только два варианта — либо ссылка, либо форма, — браузер умеет только два метода GET и POST.

Исходя из всего этого, для общения приложения с конечным пользователем использовать CRUD — это излишество. Только лишняя морока. Не говоря о том, что оно сделано косвенно (по сути — костыль).

Где он может пригодится, так это в создании и использовании API к приложению. В этом случае запросы к API можно отсылать программно и с любым методом. И соответственно их обрабатывать (см. первое предложение поста).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)