Определение REST URI - PullRequest
       15

Определение REST URI

1 голос
/ 05 февраля 2010

Я не могу привыкнуть к определению URI "хороших REST". Сценарий представляет собой существующий сайт с продуктами для продажи. Вы можете просматривать данные в нескольких представлениях, детализируя иерархию, но в основном cat1/cat/ products или cat 2/cat3/products или любую комбинацию категорий от 1 до 4. Представление других продуктов основано на поиске.

Как вы формируете URI?

products/??????

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

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

/products?categories=german,adult,foo,bar

Чтобы избежать нескольких URI, вы можете применить некоторую логику, например, алфавитное упорядочение категорий на стороне сервера, поэтому запрос на указанный выше URI будет фактически перенаправлен через ответ 301 Moved Permanently:

/products?categories=adult,bar,foo,german

Для того, чтобы вышеуказанный шаблон части запроса работал в браузерах, вам нужно будет использовать JavaScript для генерации запроса из любых HTML-форм - вы также можете сделать это так, если хотите избежать этой конкретной проблемы:

/products?cat1=adult&cat2=bar&cat3=foo&cat4=german
1 голос
/ 05 февраля 2010

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

Один из принципов дизайна REST (на мой взгляд) заключается в том, что вашим пользователям / клиентам НИКОГДА не придется формировать URL-адрес, чтобы найти ресурс, вместо этого они будут читать какой-то гипертекст (например, HTML), который описывает ресурсы, идентифицировать то, что они хотят и получите соответствующую ссылку из гипертекста (например, в HTML атрибут href тега содержит URL-адрес, который также может быть случайной строкой символов.

Опять же, на мой взгляд, если ваше приложение требует, чтобы пользователь / клиент имел возможность выполнять поиск по произвольно названным категориям, вероятно, не подходит иметь интерфейс RESTLY-дизайна.

0 голосов
/ 05 февраля 2010

Да, проблема в том, что у вас нет уникального идентификатора ресурса, потому что:

products/cat1/cat4

На самом деле это та же страница, что и

products/cat4/cat1

(Предположительно, вид всего, отмеченного как cat1 и cat4, или все совпадения из cat1 и cat4)

Если бы ваши категории были организованы в иерархию, вы знали бы, что, например, "cat6" является дочерним по отношению к "cat1".

Так что ваши два варианта будут

1) Обеспечить естественный порядок для категорий

или

2) Имеют два разных URI, по существу указывающих на один и тот же ресурс (с перманентным перенаправлением 301 на предпочитаемый вами ресурс).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...