Какова лучшая практика в RESTful URL? - PullRequest
1 голос
/ 13 мая 2019

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

Это мои доменные отношения:

designer <-> product <-> category

Я подумал о двух способах:

  • Во-первых, используя только путь URI: /categories/{id}/products/designers
  • Во-вторых, используя строку запроса: /designers/?categoryId={id}

Я хочу знать, что лучше.

1 Ответ

2 голосов
/ 13 мая 2019

Я прежде всего намеревался написать комментарий, но это слишком долго, поэтому я написал ответ вместо этого.

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

Нет такой вещи, как RESTful URL : это неправильный технический термин, который, по-видимому, исходит из идеи, что URI должны быть осмысленными и выражать семантику для клиента в приложениях REST. Это заблуждение .

Рой Т. Филдинг определил REST архитектурный стиль в главе 5 своей диссертации. Этот документ определяет набор ограничений, которым должны следовать приложения, которые следуют такой архитектуре, и он не применяет никакой дизайн URI .

Тем не менее, при разработке REST API, общий подход - использовать существительные вместо глаголов в URI: REST предназначен для ресурсов , которые обрабатываются с использованием представлений в соответствии с семантикой методов HTTP. Хотя удобные для пользователя URI могут быть желательны, они ни в коем случае не являются обязательными с точки зрения архитектурного стиля REST. Сам URI не сделает API более или менее RESTful.

Сказав, что, если существует такая вещь, как RESTful URL , на что похожи не-RESTful URL?


Я хочу знать, что лучше.

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

Предполагая, что вы намереваетесь использовать URI, удобные для пользователя, ориентированные на ресурсы и легко запоминаемые, я бы использовал /designers?categoryId={id}: это означает, что коллекция ресурсов designer сопоставлена ​​с /designers и такую ​​коллекцию можно отфильтровать с помощью параметра запроса categoryId.

...