Сообщение 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, чтобы сервер мог проверить, что этот запрос уже обработан.
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, чтобы сервер мог проверить, что этот запрос уже обработан.
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, чтобы сервер мог проверить, что этот запрос уже обработан.