【发布时间】:2012-09-16 13:42:01
【问题描述】:
我习惯做 ROR,但我需要在 Java 环境中创建一个 RESTfull WebService。所以我决定用 Play 试试看!因为它看起来确实是个好主意。
所以我正在尝试找到一种方法将 JSON 添加到我已经存在的 firstapp 中,按照这些说明完成:http://www.playframework.org/documentation/2.0.3/JavaTodoList
我想要的是类似于 ROR 的东西。至少,我希望能够通过以下方式请求 JSON 支持:
- 调用 .json URL
- 使用“Accept: application/json”标头
所以我尝试了一些类似的脏东西:
JsonNode json = request().body().asJson();
if(json != null) {
return ok(Json.toJson(Task.all()));
}
return ok(
views.html.index.render(Task.all(), taskForm)
);
而且它现在显然不起作用......
我需要检测客户需要的那种类型。我看到有些人正在添加这样的脏路线:
POST /bars BarController.index()
GET /bars.json BarController.indexJSON()
但显然不支持客户端使用header指定json请求...
所以,我需要某种方法来确定是否有任何标头指定内容类型或接受应用程序/json。如果是这样,BarController.index() 将返回 BarController.indexJSON()...
总而言之,它与 ROR 非常相似:
respond_to do |format|
format.html # index.html.erb
format.json { render json: @bars }
end
总之:
有没有人经历过和我一样的推理并走到了尽头?
【问题讨论】:
-
您希望
request().body().asJson();会返回什么? -
如果 body 是 JSON 格式,它会返回一个 JsonNode...
-
那么您是否将 json 发布到您的服务?
-
另外,“它不工作”是什么意思?
json是空的吗? -
是的,大多数情况下,如果您对收藏进行 GET 操作,您只想检索它。所以你不要发送 à JSON Body。但是你发送一个 HEADER:Accept: application/json...
标签: java ruby-on-rails rest playframework