2012-07-11 82 views
3

Spring-data-rest目前是RC1(标题为GA July 16),但文档仍然有点粗略。到目前为止,我发现的所有示例代码都显示默认为JSON的响应,但我需要XML,理想情况下是基于ACCEPT头的XML或JSON。我发现some comments in a DZone link中有一个来源表示XML将被支持。但是这是在RC1之前的M2发布期间发布的。我在该项目的问题中也没有看到任何东西。使用Spring-Data-Rest将响应作为XML返回,而不是JSON

因此,是否有人知道如何使RC1(或SNAPSHOT)生成XML而不是JSON或除JSON之外。

回答

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内部结构的必要细节,但用MyOwnXmlView替换JsonView会相对容易。

注意:这只适用于当前版本的REST导出器。 GA版本将有不同的机制来呈现输出。不过,我会提供挂钩来执行任何想要执行的输出,因此您应该可以通过在配置上设置属性来覆盖输出呈现。如果您为此版本创建View子类,它可能只是将它更改为GA版本的HttpMessageConverter

+0

顺便说一句,事实证明,JSON接口是可以接受的了。但你给了一个很好的答案。 – 2012-07-21 00:06:46

1

那么最好的Spring IO平台我们可以实现这一点,并与IO平台我们 也不需要担心版本也。

已经张贴在如何如下另一个堆栈溢出链接来实现:

Spring Boot REST with XML Support