前言
本篇博文是关于客户端接收能力不同,SpringBoot 返回不同媒体类型的数据如何处理的说明,希望你能够喜欢
个人主页:晨犀主页
个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦
客户端接收能力不同,SpringBoot 需要返回不同媒体类型的数据,以便客户端处理。
需求说明: 演示返回JSON 格式数据
@Controller
public class ResponseController {
//返回Monster数据-要求以json格式返回
@GetMapping("/get/monster")
@ResponseBody
public Monster getMonster() {
//说明
//开发中, monster对象是从DB获取-这里模拟一个monster对象
Monster monster = new Monster();
monster.setId(100);
monster.setName("奔波霸");
monster.setAge(200);
monster.setIsMarried(false);
monster.setBirth(new Date());
Car car = new Car();
car.setName("奔驰");
car.setPrice(222.2);
monster.setCar(car);
return monster;
}
}
● 需求说明: 使用Postman 发送Http 请求,根据请求头不同,返回对应的json 数据或者xml数据, 如图
<dependency>
<groupId>com.fasterxml.jackson.dataformatgroupId>
<artifactId>jackson-dataformat-xmlartifactId>
dependency>
1.Postman 可以通过修改Accept 的值,来返回不同的数据格式
2.对于浏览器,我们无法修改其Accept 的值,怎么办?
解决方案: 开启支持基于请求参数的内容协商功能
修改application.yml, 开启基于请求参数的内容协商功能
spring:
mvc:
# static-path-pattern: /res/** #修改静态资源访问的路径/前缀
hiddenmethod:
filter:
enabled: true #启用了HiddenHttpMethodFilter,开启页面表单的Rest功能
contentnegotiation:
favor-parameter: true #开启基于请求参数的内容协商功能
web:
resources:
#修改/指定 静态资源的访问路径/位置
static-locations: ["classpath:/img/","classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/"]
#String[] staticLocations
参数format 是规定好的, 在开启请求参数的内容协商功能后,SpringBoot 底层ParameterContentNegotiationStrategy 会通过format 来接收参数,然后返回对应的媒体类型/数据格式, 当然format=xx 这个xx 媒体类型/数据格式是SpringBoot 可以处理的才行,不能乱写.
修改application.yml,指定一个内容协商的参数名
spring:
mvc:
hiddenmethod:
filter:
enabled: true #启用了HiddenHttpMethodFilter,开启页面表单的Rest功能
contentnegotiation:
favor-parameter: true #开启基于请求参数的内容协商功能
parameter-name: myformat #指定一个内容协商的参数名
web:
resources:
#修改/指定 静态资源的访问路径/位置
static-locations: ["classpath:/img/","classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/"]
#String[] staticLocations
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力