4

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

那么有没有人知道如何让 RC1(或 SNAPSHOT)生成 XML 来代替 JSON 或除了 JSON 之外。

4

2 回答 2

3

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

XML 有几个问题我们还没有找到合理的答案:

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

由于回答这些问题必然会涉及到比我们还没有的更多的社区意见,因为这个项目是如此新,所以我想我们会等到 1.0 后的版本来添加 XML 支持。如果在这个方向上有足够的动力,优先事项显然会改变,但我只是认为下周不会发生这种情况。

您可以覆盖一些机器(毕竟这只是一个 Spring MVC 应用程序)以产生您想要的任何类型的响应。如果您使用最新的快照并覆盖方法RepositoryRestMvcConfiguration.contentNegotiatingViewResolver()您可以提供来自导出器的 DTO 的完全不同的表示。这在 wiki 中有所提及。您必须检查的源代码JsonView以获取有关 DTO 内部外观的必要详细信息,但JsonViewMyOwnXmlView.

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

于 2012-07-11T20:52:28.813 回答
1

好吧,使用最新的 Spring IO 平台,我们可以实现这一点,而使用 IO 平台,我们也不必担心版本。

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

支持 XML 的 Spring Boot REST

于 2016-12-30T14:01:05.007 回答