Как получить REST-ресурс с разными «методами» поиска? - PullRequest
2 голосов
/ 26 октября 2009

Допустим, у вас был ресурс / companies, который позволял клиентам искать публичные компании, и вы хотели, чтобы клиенты могли искать компании по тикеру, местоположению, местоположению и отрасли

Вы бы сохранили тот же URL в форме:

  • GET / компании / msft
  • GET / компании / США
  • GET / компании / США и программное обеспечение

Это не похоже на правду. Есть идеи?

Ответы [ 3 ]

9 голосов
/ 26 октября 2009

Как насчет?

GET /Companies?ticker=MSFT

GET /Companies?country=USA

GET /Companies?country=USA&industry=software

Важным является идентификация ресурса. Ресурс "Список компаний". Его тип медиа может быть списком Atom или просто HTML-документом, использующим теги UL LI. Параметры запроса влияют на содержимое списка, но концептуально это все еще «список компаний».

Вы можете создать отдельный ресурс, такой как

GET /Companies/USA

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

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

GET /Companies/USA

GET /Company/MSFT

Я понимаю, что некоторые популярные веб-фреймворки так не работают, но я нашел это полезным отличием.

0 голосов
/ 26 октября 2009

У вас есть только одна компания, но есть несколько способов добраться до нее, поэтому я, вероятно, определю / companies / [уникальное имя], а затем различные вещи, такие как / companies / byticker / msft и / companies / bylocation / usa и т.д.

0 голосов
/ 26 октября 2009

Вы можете принять любой из них, но затем вернуть заголовок Location:, указывающий на канонический адрес (предположительно, GET /companies/msft).

...