Как получить полезную нагрузку из POST в Play 2.0 - PullRequest
12 голосов
/ 23 декабря 2011

Я пытаюсь реализовать REST API с помощью Play 2.0 (Scala), но я застреваю в методе POST. Как получить полезную нагрузку от объекта Request? Я не нашел никакой документации об этом и не смог выяснить из исходного кода.

Ответы [ 4 ]

8 голосов
/ 21 мая 2012

посмотрите на эту статью на playlatam

, также проверьте этот вопрос в списке Google

для Java(с именами параметров java_name):

String name = request().body().asFormUrlEncoded().get("java_name")[0];

для scala (с именами параметров scala_name):

def name = request.body.asFormUrlEncoded.get("scala_name")(0)
8 голосов
/ 24 декабря 2011

Вы должны быть в состоянии сделать следующее:

def index = Action { request =>
  val body = request.body
}

А также такие вещи, как:

def index = Action { request =>
  val name = request.queryString.get("name").flatMap(_.headOption)
  Ok("Hello " + name.getOrElse("Guest"))
}
2 голосов
/ 11 февраля 2012

Мне пришлось сделать это несколько иначе (возможно, я использую более новую версию кодовой базы):

мой JavaScript:

$(document).ready(function(){
  $.post( "/ping", {one: "one", two: "two" },
    function( data ){
      console.log(data); //returns {"one":"one","two":"two"}
    })
});

мой маршрут:

POST /ping controllers.Application.ping()

Мой метод управления:

def ping() = Action{ request =>

  val map : Map[String,Seq[String]] = request.body.asFormUrlEncoded.getOrElse(Map())

  val one : Seq[String] = map.getOrElse("one", List[String]())
  val two : Seq[String] = map.getOrElse("two", List[String]())

  Ok( 
    toJson( JsObject(List( "one"->JsString(one.first), "two"->JsString(two.first))))
  )
}

Полагаю, это изменится в окончательной версии.

0 голосов
/ 15 декабря 2013

Вот что я сделал.

val map : Map[String,Seq[String]] = request.body
val seq1 : Seq[String] = map.getOrElse("socket_id", Seq[String]())
val seq2 : Seq[String] = map.getOrElse("channel_name", Seq[String]())
val socketId = seq1.head
val channelName = seq2.head
...