Request.params отсутствует в Play Framework 2.0

Есть ли способ получить доступ ко всем параметрам запроса, независимо от метода HTTP? Я изучил документацию и API, но не нашел пути в Play Framework 2.0.

У меня есть поиск на сайте, который принимает POST и GET. Пользовательское отслеживание на сайте проверяет все переданные параметры, чтобы определить правильный способ хранения данных отслеживания.

В Play Framework 1.2.x я смог получить доступ к параметрам из запроса в контроллере с помощью

request.params.get("keywords")
request.params.get("location") 
request.params.all()

В Play Framework 2.0 это больше не так. Requestбольше не имеет метода params, только queryStringи queryString работают только с GET, а не с POST.

Невозможно определить каждый возможный параметр отслеживания в действии контроллера, они являются динамическими.


ОБНОВЛЕНИЕ: Возможный обходной путь — использование парсеров тела.

В зависимости от типа содержимого запроса используется соответствующий синтаксический анализатор, например application/form-url-encodedvs application/json

Это грубая карта, которая объединяет параметры POST и параметры GET, причем параметры GET имеют приоритет.

val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map() 
params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty } 
params ++= request.queryString 

38
задан mguymon 3 April 2013 в 21:42
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: