Проект REST ставит под сомнение множественные идентификаторы ресурса, которые должны быть представлены клиентам - PullRequest
6 голосов
/ 11 ноября 2010

Я хотел бы задать вопрос о дизайне API REST HTTP, который я предоставляю.

Мне иногда приходится обращаться к виджету с идентификатором 3:

http://ourserver/service/widgets/3

Получить виджет с идентификатором 3

Но мне также иногда требуется доступ к виджету по его SKU #.

Разве неправильно выставлять один и тот же ресурс через 2 URL-адреса?

Но мне нужно, чтобы мои клиенты получали виджет либо по его идентификатору, либо по SKU.

Что из следующего лучше?

  • http://ourserver/service/widgets/bysku/skyunumber
  • http://ourserver/service/widgets/skyunumber?idtype=sku

Еще раз повторю, мне нужно, чтобы мои клиенты могли искать виджет двумя различными способами. Каков наилучший способ создания URL-адресов?

1 Ответ

13 голосов
/ 11 ноября 2010

Я бы посоветовал учесть следующее:

GET http://ourserver/service/widgets?sku=34342323
=>
303 See Other
Location: http://ourserver/service/widgets/43

GET http://ourserver/service/widgets/43

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

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