之前一定已经回答过了,但是我的谷歌电源今天关闭了,我一直在努力解决这个问题。我们正在从旧的 PHP 基础迁移到基于 Jersey 的 JVM 堆栈,它最终将提供一个可以从许多应用程序中使用的基于 JSON 的 RESTful API。到目前为止,一切都非常好,我们喜欢简单的 POJO 到 JSON 的转换。但是,我们正在处理跨域 JSON 请求中的困难。我们基本上所有的响应都返回 JSON(使用 @Produces("application/json") 和 com.sun.jersey.api.json.POJOMappingFeature 设置为 true)但是为了支持 JSONP,我们需要更改我们的方法以返回一个JSONWithPadding 的实例。这当然也需要我们为每个方法添加一个@QueryParam("callback") 参数,这基本上会重复我们的工作,根据请求中是否有回调参数,导致需要两个方法以相同的数据响应。显然,这不是我们想要的。
所以我们基本上尝试了几种不同的选择。作为泽西岛的新手,我相信这个问题已经解决了。我从几个地方读到我可以编写请求过滤器或者我可以扩展 JSON Provider。我理想的解决方案是不对我们的数据或逻辑层产生影响,而是有一些代码说“如果有回调参数,则用回调包围 JSON,否则只返回 JSON”。在这里找到了一个解决方案:http: //jersey.576304.n2.nabble.com/JsonP-without-using-JSONWithPadding-td7015082.html
但是,该解决方案扩展了 Jackson JSON 对象,而不是默认的 JSON 提供程序。
最佳实践是什么?如果我在正确的轨道上,我可以扩展的默认 JSON 过滤器的类是什么?是否需要任何额外的配置?我完全偏离轨道了吗?