Как я могу разобрать URI запроса, содержащий определенное слово

Я пытаюсь обработать запрос, содержащий слово «фильтр». В настоящее время я использую URL как http://localhost:9997/filter=... .

и синтаксический анализ с использованием pathPrefix (fiter)

Но URL-адрес изменится и станет выглядеть как http://localhost:9997/something../filter=

Так что здесь я не могу использовать pathPrefix(). Как я могу обрабатывать такой путь в маршрутизации, чтобы он мог обрабатывать любой URL-адрес, содержащий ключевое слово «фильтр». Я очень новичок в спрее akka. Пожалуйста, дайте мне знать о ваших мнениях. заранее спасибо


person user1548787    schedule 25.03.2016    source источник
comment
Пожалуйста, дайте мне знать, как я могу работать над этой проблемой. Все ваши предложения будут оценены и полезны для решения этой проблемы. Любой пример или материалы будут хорошими. Спасибо.   -  person user1548787    schedule 28.03.2016


Ответы (1)


Если строка, которую вы хотите сопоставить, всегда будет в конце, вы можете использовать «pathSuffix» (это может быть достаточно для того, что вы хотите)

pathSuffix("filter") { ... }

Но если это может быть где угодно на пути, это не так прямолинейно. Один из способов — использование сегментов:

path( Segment / "filter" / Segment ){ (prefix, postfix) => {...} }

Но это не соответствует, если фильтр находится на любом конце: «filter/blah/blah» или «balh/blah/filter», но вы можете обойти это, сопоставив префикс и суффикс. Я полагаю, что есть лучший способ, может быть, с пользовательской директивой.

Взгляните на http://spray.io/documentation/1.2.3/spray-routing/predefined-directives-alphabetical/#predefined-directives

person GClaramunt    schedule 29.03.2016
comment
Спасибо за ответ. - person user1548787; 30.03.2016
comment
Подскажите, пожалуйста, во 2-х вариантах, то есть пути (сегмент/фильтр/сегмент), как я могу получить uri запроса. Пожалуйста, дайте мне пример или образец кода. Спасибо. - person user1548787; 30.03.2016