有没有办法以REST的方式向同一个应用程序上的服务发出请求并显示它的响应?我已经创建了一个具有填充表单参数的UI。当用户点击提交时,我希望将响应嵌入到同一页面中,并以json的形式将其显示给用户。当然,我也希望它可以被外部调用,因为它将是一个宁静的api。
我可以在routes文件中定义一个返回一些json的路径,但我不确定如何从应用程序本身使用它。
我希望这很清楚。如果有必要,我很乐意提供更多细节。
答案 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(.....)
}
}
}
你的问题不太清楚,你想要达到什么样的行为,但我希望它能帮助你找出一些方向。