与其他请求正文呼叫另一个动作

时间:2016-01-15 13:27:45

标签: java playframework playframework-2.3

我尝试编写一个动作,调用其他控制器的其他几个动作。这些操作期望JSON作为请求主体:

JsonNode jsonNode = request().body().asJson();

如何使用特定请求正文(JSON)调用其他操作?

限制:我无法修改其他控制器。

2 个答案:

答案 0 :(得分:1)

我建议使用播放的反向路由功能,向目标Call获取Action Method,将其转换为网址并使用WSClient为了发送您的请求。在scala中,假设您要向名为POST的{​​{1}}控制器中的操作方法发送Application请求:

index

相同的想法适用于Java API,但我不太熟悉细节

答案 1 :(得分:0)

我还没有对此进行过测试,但我认为这应该可以解决问题。这个版本适用于scala,我不熟悉Play Java。

def actionJson: Action[JsValue] = Action(parse.json) { request =>
  Ok("json body")
}

def actionAny: Action[AnyContent] = Action.async { request =>
  actionJson(request.map(_.asJson)).run
}