
Sergey
12.12.2017
09:33:25
как будешь проверять что password валиден?
и что мы можем поменять пароль?)
в идеале у тебя как-то по этому запросу должен быть вызван метод у сущности User - changePassword($password, $newPassword). ИЛи так уже не выйдет? или нам придется по схеме тела запроса понимать что дергать?

Борис
12.12.2017
09:35:12
Ну дейсвий будет чуть больше, чем обычный POST /user/updatepass
Но зато что мой вариант создания чувака (регистрации) POST /users/ что апдейт пароля PATCH /users/{id} внутри (после контроллера) поедут внутрь одного и того же кода

Google

Борис
12.12.2017
09:37:05

Sergey
12.12.2017
09:37:07
ну то есть маршрутизация действий на основе схемы запроса

Adel
12.12.2017
09:38:01

Sergey
12.12.2017
09:38:29
чем это лучше POST users/{id}/changeEmail, POST users/{id}/changePassword, PUT /profiles/{id}

Борис
12.12.2017
09:38:30
Да нету маршрутизации... блять, Адепты IF замените это на ивент или стратегию. IF хуйня - но в данном вопросе спор не об этом.

Sergey
12.12.2017
09:38:42
1. в чем профит твоего подхода для клиента?
2. в чем профит твоего подхода для сервера?
если что мне как фронтендеру выгоднее иметь у ресурса 3 разных метода которые принимают на вход разные схемы, нежели 1 метод который принимает anyOf от 3 схем
как бэкэндеру мне это так же выгоднее так как проще организовать маршрутизацию

Aleh
12.12.2017
09:39:55

Sergey
12.12.2017
09:40:17

Dmitry
12.12.2017
09:40:22
за что битва?... HTTP methods vs URI Path? глупо взрослым людям о таком спорить...

Google

Aleh
12.12.2017
09:40:43

Sergey
12.12.2017
09:40:46

Dmitry
12.12.2017
09:40:58
ну пусть делает, это же вкусовщина

Sergey
12.12.2017
09:40:59

Борис
12.12.2017
09:41:33


Dmitry
12.12.2017
09:41:56
ну.. по чесноку, не должно быть большой разницы в поддержке кода... роутинг один, какая разница, что он разбирает - URI или HTTP метод + URI + заголовки

Aleh
12.12.2017
09:42:43
а если клиент послал undefined, то сменишь емейл?)

Борис
12.12.2017
09:43:07

Aleh
12.12.2017
09:43:47
проще 3 роута, потому что роутер уже написан, а тут приходится выдумывать роутер по схеме тела запроса

Борис
12.12.2017
09:43:48

Aleh
12.12.2017
09:43:48
брр

Adel
12.12.2017
09:44:20
ну в квартирах почемуто делают отдельно кухню, ванну и спальню :) и не просто так. унитазов на кухне я чтото не видел...

Борис
12.12.2017
09:44:32

Sergey
12.12.2017
09:44:33

Aleh
12.12.2017
09:44:34

Борис
12.12.2017
09:45:22
Ну если чего-то не хватает, чтобы операция прошла успешно за один API call то ничего не произойдет.

Aleh
12.12.2017
09:45:37
ситуация: на клиенте багуля и вместо нового пароля посылается undefined, ты меняешь email?

Sergey
12.12.2017
09:46:02

Google

Sergey
12.12.2017
09:46:15
короч это какой-то CRUD way для работы с данными

Aleh
12.12.2017
09:46:21

Maksim (Ellrion)
12.12.2017
09:46:22
мне проще) потому что нет if-ов
а нельзя совмещать? т.е. какие то стандартные данные меняются в обычно patch а для чего то со своей доп логикой (смена статуса, пароля и т.п.) уже отдельные ендпоинты?
и насколько некорректно будет patch метод (а не пост) на таких ендпоинтах?

Aleh
12.12.2017
09:46:31

Sergey
12.12.2017
09:46:38
мне больше прельщает мысль что у каждого ресурса своя недвусмысленная определенная схема. С path так не выйдет. либо это будет массив операций.

Aleh
12.12.2017
09:47:10
короче переизобретать роутер по схеме тела так себе идея, как мне кажется

Sergey
12.12.2017
09:47:28
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH

Dmitry
12.12.2017
09:48:30
ЭЭЭЭЭЭ дисертация чувака философа за 2000г ..... сча бы в 2017 это читать.
Мне не интересно откуда rest термин - я вижу рекомендации, которые, пока что, решают мои проблемы. http://www.restapitutorial.com/lessons/httpmethods.html
Эти рекомендации называют RESTful (я встречал такое определение). Повторюсь, вещь не описывает все кейсы, но между вариантом писать POST /user/sendemail (и т.п. говно) и вот этим "RESTful" я выбираю второе.
вообще это звучит "слышу звон...", типа что-то кто-то написал, ну чо, выглядит симпатично, а, гавное, модерново... ;) Все же стоит разобраться о том, что такое REST, ибо вообще-то сначала был REST, а потом HTTP/1.1 :)

Борис
12.12.2017
09:48:38

Sergey
12.12.2017
09:48:59
Ес.
ну тогда нам с тобой не по пути)

Борис
12.12.2017
09:49:06

Dmitry
12.12.2017
09:49:16
не, если нравится, то почему бы и нет... но, блин... не аксиома совсем

Aleh
12.12.2017
09:49:26
только не для того запроса, который хотелось
в общем случае как ты будешь решать конфликты схем для разных запросов. Вот есть у тебя две разные операции по смыслу, у которых одна и таже схема или же одна схема является расширением другой?

Борис
12.12.2017
09:50:20

Maksim (Ellrion)
12.12.2017
09:50:20
можно, конечно, но зачем тебе PATCH?
ну так как по сути мы меняем часть ресурса. плюс чаще всего это не идемпотентные запросы. т.е. сменить пароль например мы не можем дважды, так как не пройдет проверку на текущий пароль

Sergey
12.12.2017
09:50:30

Google

Sergey
12.12.2017
09:50:36
почему ты считаешь что это "хорошо"?

Aleh
12.12.2017
09:50:49

Sergey
12.12.2017
09:50:58

Борис
12.12.2017
09:51:16
только не для того запроса, который хотелось
Ну так проблемы пролетарии буржуазию не парят. Я напишу, что тебе не хватает филда. (А если ты сунешь дополнительные поля, которых ты не хотел всунуть то это твои проблемы (клиента))

Aleh
12.12.2017
09:51:43

Борис
12.12.2017
09:51:53
Если транзакции, то это отдельный ресурс.

Sergey
12.12.2017
09:51:54

Aleh
12.12.2017
09:51:55

Борис
12.12.2017
09:53:09

Aleh
12.12.2017
09:54:21

Борис
12.12.2017
09:54:39
нету роутов, я не проксирую реквесты в другие контролеры или другие сервисы. Я делаю бизнесслогику. Если тебе нужны проверки на какие-то поля - ставь. Не нужны - не ставь. В чем проблема. Way действительно CRUD но вайнот?
Сча отвечу.

Sergey
12.12.2017
09:55:31

Борис
12.12.2017
09:55:39

Aleh
12.12.2017
09:55:48
ситуация: на клиенте багуля и вместо нового пароля посылается undefined, ты меняешь email?

Sergey
12.12.2017
09:55:49
НОУ
а где ты принимаешь решение о том что надо сделать?)
мне вот интересно - ты реально юзаешь PATCH так как описал?)
я поверю только если в целом от API нужен тупой CRUD, но тогда о каком PATCH мы можем говорить...

Google

Борис
12.12.2017
10:01:15

Sergey
12.12.2017
10:01:38

Борис
12.12.2017
10:01:44
И ЧО
если у тебя запрос будет делать половину запроса, а другую отбрасывать .... ятебе не завидую
где твоя атомарность блЕЯТЬ

Aleh
12.12.2017
10:02:30

Борис
12.12.2017
10:02:41
не пиши баги в клиенте
если на клиенте одна форма - заполни ее правильно. Если две, передавай только новый емейл и пароль

Aleh
12.12.2017
10:03:26

Борис
12.12.2017
10:03:41
почему? Новый пароль не передан - нету проверки

Aleh
12.12.2017
10:04:01

Борис
12.12.2017
10:04:15
ебать, а как у тебя в PHP выглядит undefined

Aleh
12.12.2017
10:04:21
никак, подсказка

Борис
12.12.2017
10:04:35
если ты докалебываешься до псевдокода, то давай поговорим о псевдокоде.
никак, подсказка
Верно - мне это и не нужно. Новый пароль не пришел - значит ингорь валидацию и не пытайся обновить новый пароль. В этом же вишка.

Aleh
12.12.2017
10:05:59

Борис
12.12.2017
10:06:20
Он же корректный, ты только про емейл спрашивал.... бля я устал.
PATCH не должен передавать все поля

Aleh
12.12.2017
10:06:43
короч я понял как ты это видишь

Борис
12.12.2017
10:08:47
Короче, Да серега, я так делаю, и пока я не разрабатываю фейсбук меня все устраивает (и устраивало). Если у меня будут намеки на пиздец сложные запросы, то я заюзая graphql а там почти тоже самое (CRUD LIKE) (сча опять полетят помидоры :( ) только можно выбирать еще извращеннее, и вот там уже есть роутинг на уровне запросов.

Aleh
12.12.2017
10:09:04