2013-11-15 1 views
14

Это то, что часть кода выглядитКак я могу разобрать параметры запроса в распылительной маршрутизации?

get{ 
     respondWithMediaType(MediaTypes.`application/json`){ 
      entity(as[HttpRequest]){ 
      obj => complete{ 


       println(obj) 
       "ok" 
      } 
      } 
     } 
    }~ 

я могу отобразить запрос на объект spray.http.HttpRequest и я могу извлечь Ури из этого объекта, но я полагаю, есть более простой способ для разбора вне параметров в запросе получения, чем делать это вручную.

Например, если мой запрос получает

http://localhost:8080/url?id=23434&age=24 

Я хочу, чтобы иметь возможность получить идентификатор и возраст из этого запроса

ответ

30

На самом деле вы можете сделать это гораздо лучше. В маршрутизации есть две директивы: parameter и parameters, я думаю, разница размыта, вы также можете использовать некоторые модификаторы: ! и ?. В случае ! это означает, что этот параметр должен быть предоставлен или запрос будет отклонен, а ? возвращает параметр, поэтому вы можете указать параметр по умолчанию в этом случае. Пример:

val route: Route = { 
    (path("search") & get) { 
    parameter("q"!) { query => 
     .... 
    } 
    } 
} 

val route: Route = { 
    (path("search") & get) { 
    parameters("q"!, "filter" ? "all") { (query, filter) => 
     ... 
    } 
    } 
} 
+0

Спасибо, это чище. –

+1

Обратите внимание, что на Spray 1.2 это будут 'parameters ('q,' filter?" All ")' –

+0

@SamyDindane не имеет значения, 'NameReplacable' определен как для строк, так и для символов – 4lex1v

 Смежные вопросы

  • Нет связанных вопросов^_^