Как ответить на альтернативный URI в веб-службе RESTful

StackOverflow https://stackoverflow.com/questions/31800

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

В соответствии с W3C Архитектура Всемирной паутины, Том первый, есть раздел об псевдонимах URI (Раздел 2.3.1) , в котором говорится следующее:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top