日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發布時間:2023/12/3 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的JAX-RS 2.x与Spring MVC:返回对象列表的XML表示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。