jax-rs jax-ws_JAX-RS 2.x与Spring MVC:返回对象列表的XML表示
jax-rs jax-ws
JSON是所有REST * API的王者,但是您仍然可能需要公開多種表示形式,包括XML。 使用JAX-RS和Spring MVC都非常簡(jiǎn)單。 實(shí)際上,唯一要做的就是用JAXB注釋對(duì)從API調(diào)用返回的POJO進(jìn)行注釋。
但是在我看來,序列化對(duì)象列表時(shí),JAX-RS會(huì)比Spring MVC更好。 讓我們來看看。
POJO
兩者的唯一要求(假設(shè)使用JAXB)是使用JAXB注釋對(duì)POJO進(jìn)行注釋:
@XmlRootElement public class Incident {}JAX-RS方式
@GET @Path("user/{userId}/incident") public List<Incident> getUserIncidents(@PathParam("userId") long userId) {// return }當(dāng)以application/json作為可接受的表示執(zhí)行上述方法時(shí),JAX-RS會(huì)將返回的列表正確序列化為JSON,如下所示:
[{"description": "Lorem ipsum..." ,"status": "NEW"},{"description": "Lorem ipsum..." ,"status": "NEW"} ]沒有特殊的包裝對(duì)象。 生成的XML可能如下所示:
<incidents><incident><description>Lorem ipsum ...</description><status>NEW</status></incident><incident><description>Lorem ipsum ...</description><status>NEW</status></incident> </incidents>它只是工作。 沒有包裝對(duì)象。 沒有額外的工作。 我們完了。
Spring MVC方式(JAXB)
在Spring中您將如何做(比如說Spring Boot,因?yàn)樗鸩阶羁?#xff09;?
@RequestMapping(value = "user/{userId}/incident") public List<Incident> getUserIncidents(@PathVariable("userId") long userId) {// return }使用以下請(qǐng)求請(qǐng)求JSON表示形式后:
$ curl -i http://localhost:8080/user/3/incident結(jié)果與JAX-RS相同。
要使服務(wù)器呈現(xiàn)XML而不是JSON,您可能必須發(fā)送Accept: text/xml標(biāo)頭:
$ curl -i -H "Accept: text/xml" http://localhost:8080/user/3/incident但是結(jié)果將是: 406不可接受。 在這種情況下找不到可接受的表示 。
Spring MVC方式(jackson-dataformat-xml)
使用Spring MVC,有一種解決方案可以立即使用,類似于JAX-RS,但輸出效果較差 。 該解決方案使用jackson-dataformat-xml。 向您的項(xiàng)目添加依賴項(xiàng):
<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId> </dependency>使用新的依賴關(guān)系,對(duì)XML表示的調(diào)用應(yīng)返回如下內(nèi)容:
<ArrayList><item><description>Lorem ipsum ...</description><status>NEW</status></item><item><description>Lorem ipsum ...</description><status>NEW</status></item> </ArrayList>請(qǐng)注意,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
jax-rs jax-ws
總結(jié)
以上是生活随笔為你收集整理的jax-rs jax-ws_JAX-RS 2.x与Spring MVC:返回对象列表的XML表示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c盘满了怎么办电脑c盘满了如何清理c盘
- 下一篇: STM32控制器多级LED调光原理与实验