JAX-RS 2.x与Spring MVC:返回对象列表的XML表示

JSON是所有REST * API的王者,但是您仍然可能需要公开多种表示形式,包括XML。 使用JAX-RS和Spring MVC都非常简单。 实际上,唯一要做的就是用JAXB注释对从API调用返回的POJO进行注释。

但是,我认为序列化对象列表时,JAX-RS的性能要比Spring MVC好。 让我们来看看。

POJO

两者的唯一要求(假设使用JAXB)是使用JAXB注释对POJO进行注释:

@XmlRootElement
public class Incident {}

JAX-RS方式

@GET
@Path("user/{userId}/incident")
public List<Incident> getUserIncidents(@PathParam("userId") long userId) {// return
}

当以application/json作为可接受的表示执行上述方法时,JAX-RS会将返回的列表正确序列化为JSON,如下所示:

[{"description": "Lorem ipsum..." ,"status": "NEW"},{"description": "Lorem ipsum..." ,"status": "NEW"}
]

没有特殊的包装对象。 生成的XML可能如下所示:

<incidents><incident><description>Lorem ipsum ...</description><status>NEW</status></incident><incident><description>Lorem ipsum ...</description><status>NEW</status></incident>
</incidents>

它只是工作。 没有包装对象。 没有额外的工作。 我们完了。

Spring MVC方式(JAXB)

在Spring中您将如何做(比如说Spring Boot,因为它起步最快)?

@RequestMapping(value = "user/{userId}/incident")
public List<Incident> getUserIncidents(@PathVariable("userId") long userId) {// return
}

使用以下请求请求JSON表示形式后:

$ curl -i http://localhost:8080/user/3/incident

结果与JAX-RS相同。

要使服务器呈现XML而不是JSON,您可能必须发送一个Accept: text/xml标头:

$ curl -i -H "Accept: text/xml" http://localhost:8080/user/3/incident

但是结果将是: 406不可接受。 在这种情况下找不到可接受的表示

Spring MVC方式(jackson-dataformat-xml)

借助Spring MVC,有一种解决方案可以立即使用,类似于JAX-RS,但输出效果较差 。 该解决方案使用jackson-dataformat-xml。 向项目添加依赖项:

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId>
</dependency>

使用新的依赖关系,对XML表示的调用应返回如下内容:

<ArrayList><item><description>Lorem ipsum ...</description><status>NEW</status></item><item><description>Lorem ipsum ...</description><status>NEW</status></item>
</ArrayList>

请注意,jackson-dataformat-xml不需要使用JAXB批注。

翻译自: https://www.javacodegeeks.com/2015/04/jax-rs-2-x-vs-spring-mvc-returning-an-xml-representation-of-a-list-of-objects.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android读取excel文件_python里读写excel等数据文件的几种常用方式

python处理数据文件第一步是要读取数据&#xff0c;文件类型主要包括文本文件(csv、txt等)、excel文件、数据库文件、api等。下面整理下python有哪些方式可以读取数据文件。1. python内置方法(read、readline、readlines)read() &#xff1a; 一次性读取整个文件内容。推荐使用…

UGUI学习笔记之渲染顺序

转载请注明地址&#xff1a;http://www.cnblogs.com/Vincentblogs/p/4083028.html QQ群&#xff1a;346738352 Unity技术交流群&#xff0c;讲纯粹的技术。 数据记录为Unity4.6b21版本 图片解释&#xff1a;这是一个按钮UI,层级1显示的是按钮背景&#xff0c;层级2显示的Image…

exp导出excel oracle_如何从Oracle快速导出数据到Excel

【摘要】在生产系统使用过程中&#xff0c;常常会有从数据库中导出数据的需求。支持多种导出方式&#xff0c;例如使用spool、utl_file等内置方法导出&#xff0c;利用plsql developer、等第三方工具等。【正文】Oracle支持多种导出方式&#xff0c;包括自带的工具包和第三方工…

C#找出数组中重复次数最多的数值

给定一个int数组&#xff0c;里面存在重复的数值&#xff0c;如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题&#xff0c;我想到的解决方法是分组。 1、先对数组中的所有元素进行分组&#xff0c;那么&#xff0c;重复的数值肯定会被放到一组中&#xff1b; 2、…

什么比日期和时区更难? SQL / JDBC中的日期和时区!

在jOOQ邮件列表上&#xff0c;最近有一个有趣的讨论&#xff0c;关于jOOQ当前缺乏对TIMESTAMP WITH TIME ZONE数据类型的现成支持。 没有人说日期&#xff0c;时间和时区很容易&#xff01; 这里有一个有趣的部分&#xff0c;我建议阅读&#xff1a; 虚假的程序员相信时间 当…

Javascript – 正则表达式

目录 1. 正则表达式1.1 创建1.2 RegExp 对象属性1.3 RegExp 对象方法1.4 RegExp 分组2. 元字符和正则表达式规则1正则表达式 正则表达式本身就是一种语言&#xff0c;由普通字符和特殊的元字符&#xff08;metacharacters&#xff09;组成。它描述了字符串的匹配模式&#xff0…

spark-sql建表语句限制_第三篇|Spark SQL编程指南

在《第二篇|Spark Core编程指南》一文中&#xff0c;对Spark的核心模块进行了讲解。本文将讨论Spark的另外一个重要模块--Spark SQL&#xff0c;Spark SQL是在Shark的基础之上构建的&#xff0c;于2014年5月发布。从名称上可以看出&#xff0c;该模块是Spark提供的关系型操作AP…

4固定在底部_礼堂椅厂家教你如何固定座椅

礼堂椅厂家众所周知&#xff0c;当人们离开时&#xff0c;礼堂或刷房中使用的座椅会自动翻转到垂直位置&#xff0c;因此行和行之间有一条大通道让人走路。 在现有技术中&#xff0c;通过以下方法翻转礼堂椅&#xff1a;在两个支腿之间设置固定轴&#xff0c;并且在支座底部的两…

带有Hibernate OGM的NoSQL –第三部分:在WildFly上构建REST应用程序

欢迎回到我们的教程系列“带有Hibernate OGM的NoSQL”&#xff01; 感谢Gunnar Morling&#xff08; gunnarmorling &#xff09;创建了本教程。 在这一部分中&#xff0c;您将学习如何在WildFly服务器上运行的Java EE应用程序中使用Hibernate OGM。 使用本教程前面部分已经知道…

关于创业公司的一些事情

最近终于离职了&#xff0c;离开了这家呆了快两年的公司&#xff0c;其中酸甜苦辣&#xff0c;不足为外人道&#xff0c;仅此记录下一些想法&#xff0c;供自己与大家思考。本文只讨论加入创业公司&#xff0c;并不讨论自己创业或者成为合伙人。 0. 该不该加入创业公司 我刚从研…

python时间去掉t_Python的set集合详解

Python 还包含了一个数据类型 —— set &#xff08;集合&#xff09;。 集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。 集合对象还支持 union&#xff08;联合&#xff09;&#xff0c;intersection&#xff08;交&#xff09;&#xff0c;difference&…

快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}

编程的快乐和乐趣&#xff0c;来自于能成功运行程序并运用到项目中,会在后面案例&#xff0c;实际运用到项目当中与数据更新一起说明 从面板切换开始&#xff0c;请看效果图和代码&#xff0c;这只是一个面板切换的效果 Index HTML Code <!DOCTYPE html> <html ng-ap…

去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架

「本文是之前学习VO 部分整理的思维导图&#xff0c;笔记写入之后均折叠了起来&#xff0c;正文中采用markdown格式展开&#xff0c;可看到笔记内容」放上来的目的其实是方便自己查阅笔记&#xff0c;同样给有需要的同学提供一点思路。整体上的结构分为5部分&#xff0c;包括常…

教程:如何实现Java OAuth 2.0以使用GitHub和Google登录

将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录。 如果您像我一样懒惰&#xff0c;那么我想您也希望跳过填写表单和输入新密码的操作 。 只要有权限&#xff0c;许多人都希望使用第三方登录&#xff0c;只要他们要求的权…

工作生活随笔

11月10日&#xff1a;最近在看设计模式&#xff0c;争取把23种设计模式都用php写个示例。但是网上php实现的还是比较少&#xff0c;而且就算有例子也不太满意&#xff0c;倒是其他语言写的还不错。于是最近看了很多其他的语言编写的程序&#xff0c;其实都差不多。以后如果有时…

柔性太阳能电池pdf_房车旅行如何做到电力无忧,那就选择一套合适的太阳能供电系统吧...

“旅行途中房车电力够不够用&#xff1f;”是众多车友在购买房车时会考虑的因素之一。而房车外部供电方式一般有三种&#xff1a;电网供电、发电机发电和太阳能发电&#xff0c;其中太阳能发电因其结构简单、体积小且轻、易安装、维护简单、寿命长不易损坏、一次性投资、循环利…

POJ 3617

题意&#xff1a;给定长度为N的字符串S&#xff0c;现要构造一个字符串T&#xff08;起初为空串&#xff09;。任意进行一下的一种操作&#xff1a; 1>从S的头部删除一个字符&#xff0c;加到T的尾部 2>从S的尾部删除一个字符&#xff0c;加到T的尾部 目的使T的字典序最小…

echarts的词云图表类型有哪些_数据可视化之常见12种图表类型分析

数据可视化有众多展现方式&#xff0c;不同的数据类型要选择适合的展现方法&#xff0c;今天友创云天就整理分析了几种常见的类型&#xff0c;给大家提供参考。1.饼图饼图是一个划分为几个扇形的圆形统计图表。每个扇形的弧长&#xff08;以及圆心角和面积&#xff09;大小&…

使用Spring Boot和注释支持配置Spring JMS应用程序

1.简介 在以前的文章中&#xff0c;我们学习了如何使用Spring JMS配置项目。 如果查看有关使用Spring JMS进行消息传递的文章介绍 &#xff0c;您会注意到它是使用XML配置的。 本文将利用Spring 4.1版本中引入的改进 &#xff0c;并仅使用Java config来配置JMS项目。 在这个示…

两个饥肠咕咕的人

http://www.amznz.com/43/ Long long ago&#xff0c;有两个饥肠咕咕的人得到了一位长者的恩赐&#xff1a;一根鱼竿和一篓鲜活硕大的鱼。其中&#xff0c;一个人要了一篓鱼&#xff0c;另一个人要了一根鱼竿&#xff0c;于是他们分道扬镳了。得到鱼的人原地就用干柴搭起篝火煮…