首页>>后端>>SpringBoot->引入 jackson

引入 jackson

时间:2023-11-30 本站 点击:1

背景

继续接上一篇的文章,项目中同时加入了 JSON 和 XML 解析器后,一个请求没有设置 produces 属性时,得到的数据是什么类型呢?本文来探讨这个问题。

引用 XML 解析包

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

定义测试类

定义一个测试 Controller ,添加一个方法:

@RestControllerpublicclassTestJson{@RequestMapping(value="/hello/json")@ResponseBodypublicMyDatahello(){returnnewMyData("wang",System.currentTimeMillis());}@DataclassMyData{privateStringname;privateLongtime;publicMyData(Stringname,Longtime){this.name=name;this.time=time;}}}

未指定 proceduces 的请求响应值问题

一个请求未指定 produces 的时候,它返回的数据是什么类型呢? 这里用浏览器请求的时候,返回了 XML 类型: 因为 accept 头域的 application/xml 先于 */* 被解析了。

用 postman 发送,则得到的是却是 JSON 数据:

启示录

如果项目中同时包含 XML 和 JSON 消息解析器,那么需要检查所有的方法,为其指定 produces 属性,因为不同客户端请求时的 accept 头域可能有差异,最终会导致后端使用的解析器不一样。


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