Восстановление URL-адресов - PullRequest
       23

Восстановление URL-адресов

7 голосов
/ 03 октября 2008

На работе здесь у нас есть ящик, который предоставляет XML-каналы деловым партнерам. Запросы для наших каналов настраиваются путем указания параметров и значений строки запроса. Некоторые из этих параметров являются обязательными, но многие нет.

Например, мы требуем, чтобы все запросы указывали GUID для идентификации партнера, и запрос может быть либо для действия «получить последний», либо для «поиска»:

Для поиска: http://services.null.ext/?id=[GUID]&q=[Search Ключевые слова]
Последние данные в категории: http://services.null.ext/?id=[GUID]&category=[ID]

Структурировать схему URL RESTful для этих параметров легко:

Поиск: http://services.null.ext/[GUID]/search/[Keywords]
Последний: http://services.null.ext/[GUID]/latest/category/[ID]

Но как нам обращаться с дюжиной необязательных параметров, которые у нас есть? Многие из них являются взаимоисключающими, и многие требуются в комбинациях. Очень быстро число возможных путей становится чрезвычайно сложным.

Каковы некоторые рекомендуемые методы для сопоставления URL-адресов со сложными строками запроса в удобнее / REST / ful / paths?

(меня интересуют соглашения, схемы, шаблоны и т. Д. Не специфические технологии для реализации перезаписи URL на веб-сервере или в рамках.)

Ответы [ 2 ]

4 голосов
/ 04 октября 2008

Вы должны оставить необязательные параметры запроса в строке запроса. В REST нет «правила», которое говорит, что не может быть строки запроса. На самом деле, все наоборот. Строка запроса должна использоваться для изменения представления представления, которое вы передаете обратно клиенту.

Придерживайтесь "сущностей с представимым состоянием" для ваших компонентов пути URL. Категория выглядит нормально, но что именно вы кормите по XML? Сообщения? Каталог товаров? Части?

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

Если вы не думаете о сущностях, которые представляете при построении структуры REST, вы не выполняете REST. Вы делаете что-то еще.

Взгляните на эту статью о лучших практиках REST . Он старый, но может помочь.

1 голос
/ 04 октября 2008

Параметры со значениями? Одним из вариантов является строка запроса. Использование этого по сути не является успокоительным. Другой вариант - использовать точку с запятой, Тим Бернерс-Ли говорит о них , и они могут просто отвечать всем требованиям, позволяя URL иметь смысл, не имея массивно длинных путей.

...