Springboot之内容协商

什么是内容协商?

针对于标注了@responsebody的处理方法,我们服务器会根据浏览器的需要返回不同格式的响应数据,如json、xml这些。

原理

1.浏览器发送请求时,请求头会携带accept信息,表示浏览器所能接受的响应信息格式(带权重的)
在这里插入图片描述
2.springboot会对控制器处理方法返回的类型进行处理,springboot底层通过messageConverter进行转换,我们springboot底层会统计出我们能转换的所有类型格式。
上述两步的源码有兴趣的可以参照下面这张图片进行自行查找
在这里插入图片描述

3.第一步我们相当于取得了浏览器需要的类型,第二步我们获得了我们能响应的类型,然后我们进行双重循环遍历,找出所有浏览器和服务器二者都兼容的类型。
在这里插入图片描述
4.有了二者都能接收的类型,但是我们实际返回给浏览器的只有一种形式得数据类型,那么我们就会根据浏览器提供的权重进行排序,这样就完成了内容协商功能。
在这里插入图片描述

实际上内容协商就是浏览器在发送请求得时候告诉服务器自己需要哪种格式,同时服务器自己本身对多种响应格式进行兼容处理,根据浏览器得要求返回对应的格式即可,这就是内容协商得主要原理。

你可能感兴趣的:(springboot,java,spring,boot)