2013-05-23 1 views
1

Чем больше я ищу Google, тем более Именование RESTful кажется более черным, чем стандартным. Я хотел бы изложить сценарий, который у меня есть, и мое текущее направление мышления, и попросить тех из вас, у которых есть опыт REST, взвешивать.Подробнее RESTful, назвав

У меня есть объект «Packet», который вы можете представить как физическую папку или связующее , Внутри этого пакета есть одна или несколько форм. Моя система представляет их как ресурс, называемый PacketForms. Каждая запись формы имеет столбец SortIndex, который определяет, в каком порядке отображаются или печатаются формы.

Когда я показываю список форм в приложении, есть стрелки вверх/вниз, которые позволяют пользователю изменять форму SortIndex. Итак, теперь я готов выполнить это действие.

Моя первая мысль заключалась в том, чтобы иметь операцию специально для продвижения/понижения формы формы в порядке сортировки. Если я пойду с этим подходом, основанный на том, что я здесь видел, кажется, что я должен думать о индексе сортировки сам как ресурс. Итак, я мог бы выразить свое намерение в строке запроса, так, верно?

PUT/PacketFormSortIndex/5? Действие = Содействие

Но я также подумал, почему бы не только обновить саму PacketForm и пусть фоновым взгляд на изменения в SortIndex. Вместо того, чтобы продвигать/понижать подход, если SortIndex изменен, я поменяю его на форму, которая в настоящее время имеет этот индекс. Итак, если кто-то обновляет PacketForm с SortIndex = 3, чтобы иметь значение SortIndex = 2, система будет обновлять обе записи для выполнения свопа.

Лично мне нравится атомная природа первого подхода. У этого есть очень конкретная, ясная цель, и код на задней стороне чище. Но если я распространяю эту логику в своей системе, я немного беспокоюсь о «разрастании ресурсов».

Итак, я думаю, у меня есть еще два вопроса. Который, если любой из этих подходов чувствует себя более «RESTY» для вас? Если это первый, целесообразно ли использовать запрос в том порядке, который я предложил, или существует ли более RESTful способ организовать этот URL-адрес?

Для чего-то, что используется так широко, я действительно борюсь с широким разнообразием информации, которую я нашел, поэтому ваша перспектива очень ценится.

ответ

1

Либо если вы пойдете на продвижение/понижение или наоборот, вы говорите только о грамотности своих URL-адресов. За кулисами бэкэнд должен будет заниматься бизнесом и проверять, какой другой ресурс влияет на изменение заказа.

При этом создание PacketFormSortIndex представляется не очень полезным. Waht было бы разницей между применением действия demote/promotion на Packet или PacketFormSortIndex. Для меня похоже одно и то же семантически, поэтому нет оправдания для отдельной сущности.

И, наконец, я бы на любой из следующих вариантов:

1) PUT /packet/1 Я бы отправить только те поля, которые обновляются: {"index": 3}, и магия будет происходить за кулисами ... но если я должен был быть Resty вы должны реагировать с массивом ресурсов, где обновленными:

[ { "id": 1, "index": 3}, {"id":4, "index":4}] 

2) основная часть пути и логика определения того, какие ресурсы подвергаются в интерфейсе PUT /packet/_bulk и отправить [ { "id": 1, "index": 3}, {"id":4, "index":4}].

Для меня, если производительность бэкэнд здесь не проблема, и я думаю, что нет, лучшим решением является 1.

Смежные вопросы