当前的RC1是Spring-data-rest(即将于7月16日在GA发布),但是文档仍然有些粗略.到目前为止,我发现的所有示例代码均显示默认为JSON的响应,但我需要XML,理想情况下,还需要基于ACCEPT标头的XML或JSON.我在some comments in a DZone link中找到了一个表明将要支持XML的来源.但这是在RC1之前的M2版本中发布的.我在该项目下的“问题”中也看不到任何内容.
因此,有人知道如何使RC1(或SNAPSHOT)产生XML而不是JSON或除了JSON之外.
解决方法:
我希望在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即可.
标签:rest,spring-data-rest,xml,json,java
来源: https://codeday.me/bug/20191201/2078086.html