Дизайн привлекательного URL RESTful предназначен для отображения ресурса на основе структуры (структура, похожая на директорию, дата: article / 2005/5/13, объект и его атрибуты, ..), косая черта /
указывает на иерархическую структуру, используйте -id
взамен.
Иерархическая структура
Я бы лично предпочел:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Если пользователь удаляет /car-id
часть, это делает cars
предварительный просмотр интуитивно понятным. Пользователь точно знает, где в дереве он находится, на что он смотрит. С первого взгляда он знает, что гаражи и машины взаимосвязаны. /car-id
также означает, что он принадлежит вместе в отличие от /car/id
.
Поиск
Поисковый запрос в порядке, как есть , есть только ваши предпочтения, что следует учитывать. Самое смешное происходит при объединении поисков (см. Ниже).
/cars?color=blue;type=sedan #most prefered by me
/cars;color-blue+doors-4+type-sedan #looks good when using car-id
/cars?color=blue&doors=4&type=sedan #I don't recommend using &*
Или в основном что-нибудь, что не является косой чертой, как объяснено выше.
Формула: /cars[?;]color[=-:]blue[,;+&]
*, хотя я бы не использовал &
знак, так как он неузнаваем по тексту на первый взгляд.
** Знаете ли вы, что передача объекта JSON в URI является RESTful? **
Списки вариантов
/cars?color=black,blue,red;doors=3,5;type=sedan #most prefered by me
/cars?color:black:blue:red;doors:3:5;type:sedan
/cars?color(black,blue,red);doors(3,5);type(sedan) #does not look bad at all
/cars?color:(black,blue,red);doors:(3,5);type:sedan #little difference
возможные особенности?
(!) Нивелируют строки поиска
Для поиска любых автомобилей, но не черный и красный :
?color=!black,!red
color:(!black,!red)
Регистрация поиск
Поиск красные или синие или черные машины с 3 -х дверей в гаражах ID 1..20 или 101..103 или 999 , но не 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Вы можете построить более сложные поисковые запросы. (Посмотрите на соответствие атрибутов CSS3 для идеи соответствия подстрок. Например, поиск пользователей, содержащих "bar" user*=bar
.)
Вывод
Во всяком случае, это может быть самая важная часть для вас, потому что вы можете сделать это , однако вы , как в конце концов, просто имейте в виду , что RESTful URI представляет собой структуру , которая легко понять , например , каталогов , как /directory/file
, /collection/node/item
, даты /articles/{year}/{month}/{day}
.. И когда вы опускаете любой из последних сегментов, вы сразу знаете, что вы получаете.
Итак, все эти символы разрешены в незашифрованном виде :
RFC 3986 см. 2.2.
Несмотря на то, что я ранее сказал, здесь есть общее различие делимеров, означающее, что некоторые «являются» более важными, чем другие.
- общие разделители:
:/?#[]@
- суб-разделители:
!$&'()*+,;=
More reading:
Иерархия: см. 2.3 , см. 1.2.3
Синтаксис параметра пути CSS URL-
адреса, соответствующий атрибуту CSS3
IBM: Web-сервисы RESTful - Основы
Примечание: RFC 1738 был обновлен RFC 3986
/cars
и/car
не является семантическим и, следовательно, плохая идея. Всегда используйте множественное число, если в этой категории более одного элемента.