Как стать автором
Обновить

Комментарии 10

PUT: будет использоваться для обновления существующего ресурса.

Частичный PUT нарушает спецификацию HTTP. Он предназначен для полной замены ресурса, а не для обновления. В чем-то сродни операции присваивания. Для частичных обновлений подходит или POST, или PATCH из RFC 5789.

Я напутал так, как напутал Филдинг, автор REST и один из архитекторов HTTP/1.1


Oy, yes, PATCH was something I created for the initial HTTP/1.1 proposal because partial PUT is never RESTful. ;-)
https://twitter.com/fielding/status/275471320685367296

И так, как напутал RFC, который определяет такую семантику для PUT (которая, между прочим, обуславливает идемпотентность этого метода)


The PUT method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload.
https://tools.ietf.org/html/rfc7231#section-4.3.4
То ли я прочитал не правильно, то ли сообщение исправили…
Показалось, что наоборот было.

Я не думаю, что мое сообщение менялось с момента публикации. Если отбросить всю шелуху, то в мире победившего хайпа неверное представление некоторых людей о PUT является только вершиной айсберга ;)

Логика в контроллерах. Как мило.

Это простой пример. А где написать эту логику, каждый может сам решить.

Во-первых, нужно уже переходить на современный пхп, убрать горы типов в аннотациях и заменить всё на тайпхинты. Во-вторых, ловятся все ексепшены и конвертятся в 4xx, т.е. пятисотые не предвидятся и в лог они не попадут. Не стриктовые сравнения типа if (!post) {… } или if (!request) {… .}, советую воспользоваться phpstan со стрикт правилами. В контроллере навалено всё, и обработка реквеста, и логика работы с ентити, а если нам нужно будет тоже самое сделать через cli например, получим дублирование.
Советую посмотреть этот пример

Там есть тайпхинты. Пхпдок если избыточный, да, можно убрать. Вообще, это мелочи.

С чего бы это пятисотые не попали в лог? Симфони с настройками по умолчанию все логирует.

Строгие сравнения это дело вкуса. Но if (!$post) короче, легче читается на мой взгляд, чем if (! (bool) $post) или if ($post === null), и лучше передает семантику (если нет поста, сделать то).

Далеко не всегда код в контроллере где-то переиспользуется. И смысл тогда его выносить куда-то? А если вдруг это потребуется, что помешает это сделать в любой момент? Кроме того, контроллер это сам по себе сервис, и его можно переиспользовать, если уж на то пошло.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий