Дизайн гарної URL-адреси RESTful стосується відображення ресурсу на основі структури (структура, схожа на каталог, дата: статті / 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 для ідеї відповідності підрядків. Наприклад, пошук користувачів, що містять "бар" user*=bar
.)
Висновок
У всякому разі, це може бути найважливіша частина для вас, тому що ви можете зробити це , однак ви , як в кінці кінців, просто майте на увазі , що RESTful URI являє собою структуру , яка легко зрозуміти , наприклад , каталогів , як /directory/file
, /collection/node/item
, дати /articles/{year}/{month}/{day}
.. І коли ви опускаєте будь-який з останніх сегментів, ви відразу знаєте, що отримуєте.
Отже .., усі ці символи дозволено незашифровано :
2.2
Незважаючи на те, що я раніше говорив, тут є загальне розмежування деліметрів, тобто деякі " важливіші", ніж інші.
- загальні деліметри:
:/?#[]@
- субделіметри:
!$&'()*+,;=
Більше читання:
Ієрархія: див. 2.3 , див. 1.2.3
синтаксис параметра синтаксису параметра URL-адреси URL-адреси, що
відповідає
IBM: RESTful Web Services - Основи
Примітка: RFC 1738 було оновлено RFC 3986
/cars
і/car
не є семантичним, а тому поганою ідеєю. Завжди використовуйте множину, коли під цією категорією є більше одного елемента.