Play 2.2在Web应用程序中返回Json响应

时间:2015-03-16 21:52:59

标签: java json playframework-2.0

有没有办法以REST的方式向同一个应用程序上的服务发出请求并显示它的响应?我已经创建了一个具有填充表单参数的UI。当用户点击提交时,我希望将响应嵌入到同一页面中,并以json的形式将其显示给用户。当然,我也希望它可以被外部调用,因为它将是一个宁静的api。

我可以在routes文件中定义一个返回一些json的路径,但我不确定如何从应用程序本身使用它。

我希望这很清楚。如果有必要,我很乐意提供更多细节。

1 个答案:

答案 0 :(得分:0)

确定。首先,让我们考虑一下为我们提供JSON响应的路由和控制器。

GET   /foo       controllers.FooController.foo

object FooController extends Controller
{
   .....

   implicit val fooWrites = Json.writes[Foo]
   def foo = Action {
       Ok(Json.toJson(Foo)).as("application/json")
   }

}

然后我们可以使用页面中的ajax来获取响应:

<script>
  ......
   $.get("@routes.FooController.foo")
            .done(function(data){
                //do something with recieved data
        });
</script>

或者,如果您想在Play App中使用数据,可以使用WS lib。例如。

对象FooController扩展Controller {

....
def fooConsumerController = Action.async {
  val fooJsonResultFuture =    
    WS.url("http://localhost:9000/foo").get().map(_.body)
    .....
     fooJsonResultFuture.map { json => 

       // do something with this result
       Ok(.....)
     }
  }
}

你的问题不太清楚,你想要达到什么样的行为,但我希望它能帮助你找出一些方向。