1

如果已经回答了这个问题,我深表歉意 - 我已经看了看,找不到任何东西。

使用 Play 框架,我定义了两个控制器 - 一个是返回 JSON 的公共 API,另一个是这个 API 的使用者,它将 JSON 呈现为 HTML。例如,我的路线文件如下所示:

GET     /foos       controllers.App.foos() #produces HTML
GET     /api/foos   controllers.API.foos() #produces JSON

该项目的一个要求是我们的数据只能通过我们的公共 API 访问。因此,我想实现它的方式是App.foos()调用API.foos(),解析 JSON 结果,并将其传递给要呈现的模板。例如:

public App extends Controller {
  public static Result foos() {
    Result result = API.foos();
    // TODO: get the JSON out of the result object
  }
}

谁能告诉我如何从结果对象中提取 JSON?我可以使用 Enumerator 获取对象的主体((SimpleResult)result.getWrappedResult()).body(),但我仍然不清楚如何获取 JSON。

因为我是 Play 框架的新手,也许我正在解决这个问题,并且有更简单/更好的方法来做到这一点?

非常感谢,詹姆斯

4

1 回答 1

0

最简单的方法是公开底层方法。

public Api extends Controller {

  public static Result foos() {
    Ok(foosJson());
  }

  public static JsValue foosJson() {
    // ...
  }
}

public App extends Controller {

  public static Result foos() {
    JsValue json = API.foosJson();
  }
}
于 2013-06-20T20:07:59.843 回答