2009-08-04 2 views
1

Я использую URL-адрес ресурса HTTP как уникальный идентификатор ресурсов (сюрприз).Как найти подходящие URL-адреса, кроме определенных строк запроса?

Они все разные:

http://localhost/Docs/SomeDocument?group=33&checksafety=true 
http://localhost/Docs/SomeDocument?group=11&checksafety=true 
http://localhost/Docs/SomeDocument?group=11&checksafety=false 

Однако, у меня есть третий параметр запроса, который не должен дифференцироваться ресурсами (на стороне сервера, она тянет те же данные из базы данных).

Это те же параметры (групповые и checksafety одинаковы):

http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=A 
http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=B 
http://localhost/Docs/SomeDocument?rendergroup=C&group=11&checksafety=false 

Является ли регулярное выражение здесь уместно?

Есть ли лучший способ?

Я использую C#, .NET 3.5 и ASP.NET.

+0

HTTP: // локальный/Docs/SomeDocum ent? group = 33 & checksafety = true и http: // localhost/Docs/SomeDocument? checksafety = true & group = 33 разные? –

+0

@samuelcarrijo - нет, они одинаковы. –

ответ

0

Вы можете разделить, чтобы получить запрос, а затем разделить, чтобы получить каждую группу, и посмотреть, все ли они имеют одинаковое количество групп (по группе I означает «переменная = значение»). Проанализируйте каждую группу индивидуально и устраните те, которые не заботятся.

Затем легче анализировать. Вот некоторые идеи

  • положить каждую группу в список и порядок его (а затем перебора, чтобы увидеть, если они один и тот же
  • поместить каждую группу в комплект и проверить, если Союз равно набор индивидуально.
  • сделать этот процесс с помощью Uri и UriBuilder, и использовать их для проверки соответствия после удаления «не имеющими отношения» групп

--edit включены Ник Берарди предложение

+1

Я согласен с тобой о его расщеплении. Но я бы сделал это, введя его в System.Uri, а затем с помощью UriBuilder создаст Uri. Затем вы легко можете просто взять свойство QueryString, разделить на «&» удалить переменную, которая вам не нравится, а затем восстановить. Единственная причина, по которой я конкретно упоминаю UriBuilder, - это то, что вам не нужно пытаться восстановить строку самим. –

+0

Это одно и то же, используя разные слова ... мой ум работает сверхурочно здесь: 1) Перепишите запрос на каждый URL, разделив и удалив ненужные «группы» и добавив группы в алфавитном порядке, затем сравните строчные буквы версии строк URL? –

+0

Это тоже сработает. Но вам не обязательно его сортировать (если вы используете Set вместо этого) –