URL для каждой строки запроса каталога - PullRequest
1 голос
/ 23 апреля 2011

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

Чтобы получить доступ к этим компонентам, я ищу хороший синтаксис в URL.Поскольку я использую Node.js , у меня нет никаких ограничений от существующего программного обеспечения веб-сервера.Компоненты - это просто структурированные объекты в JavaScript, которые можно объединить.

Схема URL, которую я использую:

/componentA/componentBextendsA/componentCextendsB

Теперь я хочу дать каждому компоненту свои параметры.Интуитивно я хотел сделать это с помощью строк запросов на основе каталогов, например:

/componentA?foo=bar&hello=world/componentB?foo=test/componentC?pie=
  • componentA
    • foo = bar
    • hello = world
  • компонентB
    • foo = test
  • компонент C
    • pie = пусто

Аргументы могут перекрываться, поскольку один компонент может обрабатывать тот же параметр запроса, что и другой.

Мои вопросы:

  • могут ли клиенты ломаться из-за этого?
  • существует ли уже существующая реализация каталогов-строк-запросов?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

С точки зрения компонента URI, URI /componentA?foo=bar&hello=world/componentB?foo=test/componentC?pie= состоит из пути /componentA и запроса foo=bar&hello=world/componentB?foo=test/componentC?pie=. А внутри компонента запроса оба значения / и ? являются допустимыми простыми символами. Так что этот URI должен правильно обрабатываться клиентами.

Если вы хотите проанализировать этот URI так, как вы описали, вы можете сделать следующее:

var url = "/componentA?foo=bar&hello=world/componentB?foo=test/componentC?pie=";
var re = /([^?]+)(?:\?([^?\/]*))/g, match, components = [];
while (match = re.exec(url)) {
    components.push({path: match[1], query: match[2]});
}
0 голосов
/ 23 апреля 2011

Я думаю, что это не очень хорошая идея.Текущая тенденция заключается в упрощении URL, для ясности и потому, что SEO.Я не знаю, работает ли это на самом деле, но параметр вставки в формате ?var=value устарел.Я разработал свой собственный фреймворк PHP, может быть, я мог бы дать некоторые идеи, если вы дадите мне больше информации.(Извините за мой английский)

...