我希望在 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 内部外观的必要详细信息,但JsonView
用MyOwnXmlView
.
注意:这仅适用于当前版本的 REST 导出器。GA 版本将有不同的机器来渲染输出。不过,我将提供用于执行任何类型的输出渲染的钩子,因此您应该能够通过在配置上设置属性来覆盖输出渲染。如果您为此版本创建View
子类,则可能只需将其更改HttpMessageConverter
为 GA 版本的子类。