Как ответить на альтернативный URI в веб-сервисе RESTful - PullRequest
4 голосов
/ 28 августа 2008

Я создаю веб-службу RESTful, которая имеет несколько URI для одного из своих ресурсов, поскольку существует более одного уникального идентификатора. Должен ли сервер ответить на запрос GET для альтернативного URI, возвращая ресурс, или я должен отправить перенаправление HTTP 3xx на канонический URI? Является ли HTTP 303 (см. Также) наиболее подходящим перенаправлением?

Пояснение: спецификация HTTP поясняет, что выбор перенаправления зависит от того, какой URI следует использовать в будущих запросах. В моем приложении «канонический» URI является наиболее стабильной из альтернатив; альтернативный URI всегда будет указывать на один и тот же канонический URI или станет недействительным.

Ответы [ 3 ]

4 голосов
/ 28 августа 2008

Лично я бы пухл, чтобы вернуть ресурс, а не перенаправлять с перенаправлением, хотя я подозреваю, что это только потому, что мое подсознание говорит мне, что перенаправления медленнее.

Однако, если бы вы решили использовать перенаправление, я бы подумал, что 302 или 307 могут быть более подходящими, чем 303, хотя w3.org содержит подробную информацию о различных кодах перенаправления, которые вы могли бы использовать.

2 голосов
/ 28 августа 2008

В W3C's Architexture World Wide Web, Volume One , есть раздел об псевдонимах URI ( Раздел 2.3.1 ), в котором говорится следующее:

"Когда псевдоним URI становится общей валютой, владелец URI должен использовать методы протокола, такие как перенаправления на стороне сервера, для связи двух ресурсов. Сообщество получает выгоду, когда владелец URI поддерживает перенаправление псевдонима URI соответствующему" официальному лицу ". «URI. Для получения дополнительной информации о перенаправлении см. Раздел 10.3, Перенаправление, в RFC2616 . См. Также CHIPS для обсуждения некоторых рекомендаций для администраторов серверов."

Для чего бы я ни рекомендовал, я бы порекомендовал редирект 302.

1 голос
/ 28 августа 2008

Ответ от Ubiguchi имел то, что мне было нужно, за исключением того, что теперь я думаю, что перенаправление - это путь, по ссылке на раздел спецификации HTTP 1.1 о кодах ответов. Оказывается, мне действительно нужно перенаправление 301, потому что URI, на который я перенаправляю, более «правильный» и стабильный, и поэтому должен использоваться для будущих запросов.

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