Как работать с объединенными объектами / ресурсами в веб-приложении и в RESTful API? - PullRequest
2 голосов
/ 13 июля 2010

У меня есть веб-приложение, в котором есть множество страниц с URL-адресом в виде / object_type / object_id /, которые показывают детали этого объекта.У меня также есть RESTful API, возвращающий JSON / XML представление моих объектов (в / api / object_type / object_id /).(Мои объекты - это законы и законопроекты, но я предполагаю, что этот вопрос довольно общий)Мир.Допустим, они были / Bill / 111 / и / Bill / 222 /.За кулисами я объединяю 2 объекта, оставляя 1 объект (скажем, / Bill / 111 /) со всей информацией, а другой «пустой» со ссылкой только на другой.

Мой вопрос, как мне указать слияние в веб-приложении и в API? Я не хочу, чтобы / Bill / 222 / возвращал 404, потому что у меня могут быть внешние ссылки, указывающие на него, и я нене хочу их сломать.Должен ли я использовать 301 Moved Permanently?Должен ли я вернуть обычную страницу (со статусом 200), объясняющую, что этот ресурс был обнаружен как дубликат со ссылкой на объединенный?Как мне справиться с этим в API?например, я должен перечислить 222 в индексе счетов?

Ответы [ 2 ]

2 голосов
/ 13 июля 2010

Я думаю, что использовал бы 301 для этого случая и прекратил бы включать 222 в список.Единственная причина для 301 заключается в том, что некоторые клиенты добавили в закладки URL.

1 голос
/ 15 июля 2010

@ Даррел Миллер:

Думаю, я бы использовал 301 для этого случая и прекратил бы включать 222 в список. Единственная причина для 301 заключается в том, что некоторые клиенты добавили в закладки URL.

Я бы только добавил, что система должна принимать ссылки на / Bill / 222 и / Bill / 111 как эквивалентные, т. Е. С учетом редактирования пользователем / Joe / 999, указывающего, что / Bill / 222 является другом Джо:

PUT /Joe/999
Content-Type: vnd.xxx+xml

<name is-friend-of="/Bill/222">Joe</name>

Это должно быть семантически идентично добавлению в друзья / Bill / 111, и, действительно, после выдачи вышеуказанного PUT, я не удивлюсь, что когда я верну его обратно, я увижу, что ссылка изменилась на 111.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...