Действительно ли URL RESTful действителен без идентификаторов между объектами? - PullRequest
1 голос
/ 20 декабря 2010

У меня есть два вопроса о дизайне API RESTful. Допустим, у меня есть веб-приложение с фруктами. Я хочу вернуть информацию обо всех фруктах, которые я несу, и подсчитать эти фрукты, и я делаю это с:

http://myfruitstand.com/fruits

Вопрос 1: Если у меня есть 10 апельсинов, то я думаю, что могу получить информацию об определенном апельсине с помощью:

http://myfruitstand.com/fruits/oranges/3

Но является ли приведенный выше URL RESTful - мне не нужен идентификатор между «фрукты» и «апельсины», чтобы соответствовать стандартам REST? Или этот URL с «фруктами» немедленно сопровождается подклассом «апельсинов», хорошо?

Вопрос 2: Точно так же, если я хочу иметь дискуссионный форум о моих апельсинах (не конкретном апельсине), могу ли я разместить их здесь:

http://myfruitstand.com/fruits/oranges/comments

Опять же, является ли приведенный выше URL RESTful, поскольку между «апельсинами» и «комментариями» нет идентификатора (идентификатор здесь, конечно, подразумевает обсуждение конкретного апельсина, а я этого не хочу)? Здесь нет рационального подкласса «апельсины», за которыми сразу следуют «комментарии».

спасибо заранее, Чак

Ответы [ 4 ]

1 голос
/ 21 февраля 2011

Просто сам задавал вопросы о стиле RESTful.Но мое мнение таково:

Если это фруктовый магазин, не подразумевается ли «фрукт»?Как насчет просто:

/ апельсины / {id}

В качестве альтернативы:

/ fruits / {id}

Это просто фрукт типа Апельсин,

/ fruits? Type = orange может вернуть вам список апельсинов

1 голос
/ 20 декабря 2010

Было бы более RESTful построить по парам коллекции ресурсов / id, например, / fruits /: id1 / items /: id2, где id1 = оранжевый, id2 = 3

/fruits/orange/items/3

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

/fruits/orange/comments

например, слайд 48 из http://www.slideshare.net/Wombert/phpnw10-designing-http-services-and-restful-interfaces

0 голосов
/ 20 декабря 2010
  1. Я не верю из вашего объяснения использования, что вам нужен идентификатор для ресурса фруктов.
  2. Аналогично, для второго также не нужен идентификатор.

Пока ваши URL-адреса моделируют вашу объектную организацию, я думаю, что вы готовы.

Кроме того, мое личное мнение таково, что если вы обнаружите, что вам нужно немного отступить от какой-либо спецификации, чтобы удовлетворить потребности вашего приложения, это разумная вещь. Не допускайте, чтобы соблюдение такой «модели» мешало выполнению работы. Например, в контексте RESTful иногда вы выполняете действия, связанные с некоторыми объектами, которые просто не подпадают под глаголы DELETE / PUT / POST / GET. Вы добавляете туда эти вещи, чтобы поддерживать совершенный отдых?

Я сейчас прячусь за своим столом, чтобы RESTful-гуру / религиозные деятели не потеряли сознание, которые теперь неизбежно избьют меня :)

0 голосов
/ 20 декабря 2010

Да, все URL спокойны, пока они детерминированы. Restful больше относится к используемым вами http-методам (например, DELETE для удаления, POST для редактирования, GET для чтения, ...).

...