Вопрос

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

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

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

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

Поиск: http://services.null.ext/[GUID]/search/[Ключевые слова]
Последний: http://services.null.ext/[GUID]/latest/category/[ID]

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

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

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

Это было полезно?

Решение

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

Придерживайтесь «Сущностей с репрезентативным состоянием» для компонентов URL-пути.С категорией все в порядке, но что именно вы передаете через XML?Посты?Товары из каталога?Части?

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

Если вы не думаете об объектах, которые представляете, при построении структуры REST, вы не используете REST.Ты делаешь что-то другое.

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top