Хобрук: Ваш путь к мастерству в программировании

Какой URI RESTful лучше всего подходит для тегов ресурса

Допустим, у вас есть ресурс рецептов, и у рецепта могут быть теги. Затем вы хотите получить список всех тегов, используемых во всех рецептах, каким будет URI?

/recipes/tags

Похоже, это может сработать, но это нарушает соглашение не указывать на конкретный идентификатор, например:

/recipes/1/tags

Вы также можете просто использовать:

/tags

Но мне нужны теги только для рецептов, а не для других ресурсов. Итак, я бы использовал параметры запроса, такие как:

/tags?type-recipes

И FTR, теги используются только для рецептов, а не для каких-либо других ресурсов, поэтому использование параметра запроса может ввести в заблуждение, поскольку это никогда не будет ничего, кроме рецептов.

21.04.2014

  • первый - лучший способ, вам не нужно указывать на конкретный идентификатор, просто укажите на ресурс. 21.04.2014

Ответы:


1

Фильтры - это сложно, особенно когда ваш фильтр также является ресурсом.

Вы правы, что / recipes / tags проблематичны. Вы переходите от переменной пути / resouce / {resouceId} к / resource / {filter}, которая может открыть целое слово боли.

Итак, для вашего первого примера выберите что-то вроде

 /recipes?tags={tags to filter on}
 Returns a list of Recipes based on the tag

Проблема в том, что у вас нет метода поиска приемлемых тегов. Я бы ожидал, что / tags вернет список тегов, а затем потребит его вот так

 /tags
 Returns a list of all tags

 /tags/{tagID}
 Returns meta data about the specific tag (what the tag is used for, which is superfluous in this case if you only have recipe tags, but it is more flexible)

 /tags/{tagID}/recipes
 Returns a list of recipes associated with that ID.

Затем вам нужно решить, хотите ли вы поддерживать связанный ресурс, подобный этому.

 /tags/eggs/recipes/1
 Recipe details 

Что по-прежнему будет тем же самым, что и

/recipes/1 

Их можно связать - это может сбить с толку, если в рецепте / 2 нет яиц, и вы попытаетесь получить к нему доступ, используя / tags / egg / recipes / 2.

21.04.2014
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..