Информация об изменениях

Сообщение Re[3]: REST: прохой\хороший интерфейс от 31.01.2020 14:15

Изменено 31.01.2020 14:16 scf

Re[3]: REST: прохой\хороший интерфейс
Здравствуйте, ylem, Вы писали:

vsb>>1. Действия соответствуют семантике. GET возвращает, PUT кладёт, и тд. Кроме того соблюдается идемпотентность, т.е. можно вызывать GET или PUT сколько угодно раз с одними и теми же параметрами.


Y>Подскажите, пожалуйста, как правильный REST будет выглядеть для случая например:

Y>Есть модель объекта в обычном 3D пространстве и ее нужно сдвинуть на сколько-то в какую-то сторону.
Y>Если "сдвинуть" слишком просто, то чуть служнее: сплющить.
Y>А "идемпотентность" тут как-то можно соблюсти?

Y>Если я неправильно смотрю на весь дизайн, то как правильно, при условии, что объект есть, и только штука с интерфейсом знает, как его правильно двигать и плющить.


Y>Если расскажете, большое спасибо.

Y>Если не расскажите, просто спасибо, что дочитали

Лучше всего, если есть возможность получить положение и масштабы объекта, а потом их просеттить, это будет идемпотентно:

POST /api/v1/model/{id}/position
POST /api/v1/model/{id}/scale

Либо вообще
PATCH /api/v1/model/{id}

Если идемпотентность соблюсти нельзя, то ничего не поделаешь, придется делать без неё:

POST /api/v1/model/{id}/shift
POST /api/v1/model/{id}/scale

И обеспечивать отсутствие повторных запросов при реконнектах дополнительными заголовками а-ля X-Request-Id, чтобы сервер мог проверить, что этот запрос уже обработан.
Re[3]: REST: прохой\хороший интерфейс
Здравствуйте, ylem, Вы писали:

vsb>>1. Действия соответствуют семантике. GET возвращает, PUT кладёт, и тд. Кроме того соблюдается идемпотентность, т.е. можно вызывать GET или PUT сколько угодно раз с одними и теми же параметрами.


Y>Подскажите, пожалуйста, как правильный REST будет выглядеть для случая например:

Y>Есть модель объекта в обычном 3D пространстве и ее нужно сдвинуть на сколько-то в какую-то сторону.
Y>Если "сдвинуть" слишком просто, то чуть служнее: сплющить.
Y>А "идемпотентность" тут как-то можно соблюсти?

Y>Если я неправильно смотрю на весь дизайн, то как правильно, при условии, что объект есть, и только штука с интерфейсом знает, как его правильно двигать и плющить.


Y>Если расскажете, большое спасибо.

Y>Если не расскажите, просто спасибо, что дочитали

Лучше всего, если есть возможность получить положение и масштабы объекта, а потом их просеттить, это будет идемпотентно:

PUT /api/v1/model/{id}/position
PUT /api/v1/model/{id}/scale

Либо вообще
PATCH /api/v1/model/{id}

Если идемпотентность соблюсти нельзя, то ничего не поделаешь, придется делать без неё:

POST /api/v1/model/{id}/shift
POST /api/v1/model/{id}/scale

И обеспечивать отсутствие повторных запросов при реконнектах дополнительными заголовками а-ля X-Request-Id, чтобы сервер мог проверить, что этот запрос уже обработан.