使用Spring-Data-Rest将响应作为XML而不是JSON返回

时间:2012-07-11 17:47:48

标签: java xml json rest spring-data-rest

Spring-data-rest目前是RC1(前往GA 7月16日),但文档仍然有点粗略。到目前为止,我找到的所有示例代码都显示了对JSON的默认响应,但我需要XML,理想情况下需要基于ACCEPT标头的XML或JSON。我在some comments in a DZone link中找到了一个表明支持XML的源代码。但这是在RC1发布期间发布的。我在项目的问题中也没有看到任何内容。

所以有人知道如何使RC1(或SNAPSHOT)生成XML而不是JSON或者除了JSON之外。

2 个答案:

答案 0 :(得分:2)

我希望在Spring Data REST中生成XML有一个简单的答案,但我还没有找到。我们默认使用JSON,因为我们认为这是一个超级简单,轻量级的“协议”,用于传输对象,并且在大多数情况下都能正常工作。

XML存在一些问题,我们没有找到合理的答案:

  • 如何用XML表示对象?我是否使用属性名称作为元素名称,还是使用标准元素名称并将属性名称放在属性中?
  • 我在哪里确定属性的类型(无论是复杂还是简单,Long,BigInteger还是你有什么)?
  • 我是否免除了所有自定义映射信息,只使用JAXB或Spring OXM?
  • 我该怎么办链接?我是否使用Atom命名空间链接元素?
  • 如果我已经使用Atom,为什么不使用Atom表示呢?

由于回答这些问题必然会涉及到比我们现在更多的社区意见,因为项目是如此新颖,我以为我们要等到1.0之后的版本才能添加XML支持。如果在这个方向上有足够的动力,优先级可能会明显改变,但我不认为它会在下周发生。

你可以覆盖一些机制(毕竟这只是一个Spring MVC应用程序)来产生你想要的任何类型的响应。如果您使用最新快照并覆盖the RepositoryRestMvcConfiguration.contentNegotiatingViewResolver() method,则可以提供与导出器出来的DTO完全不同的表示形式。这被称为in the wiki。您必须检查the source code of JsonView以获取有关内部DTO内容的必要详细信息,但使用JsonView替换MyOwnXmlView相对容易。

注意:这仅适用于当前版本的REST导出程序。 GA版本将具有不同的机制来呈现输出。我将提供钩子来执行任何类型的输出呈现,但是,您应该能够通过在配置上设置属性来覆盖输出呈现。如果您为此版本创建View子类,则可能只需将其更改为GA版本的HttpMessageConverter

答案 1 :(得分:1)

使用最新的Spring IO平台,我们可以通过IO平台实现这一目标  也不用担心版本。

已经发布了如何在另一个堆栈溢出链接中实现如下:

Spring Boot REST with XML Support