P8 写代码:内容协商

对第七章讲的部分,进行编码。

在默认情况下,webApi只用json作为输入和输出的格式化器

返回的数据还是json

返回的类型是json

上面的headers才是我们请求的,下面的headers是我们返回的。也是响应的

把接收的类型改成xml,发送请求,后端返回的还是json格式。哪怕我们右边下拉切换成xml 其实返回的还是json格式的


正常情况不支持的格式应该是要返回406状态码的。但是.net core默认不支持,需要我们手动的配置一下 
这里默认是false。就是当我请求服务端json格式的时候,如果服务端默认的就是xml格式,而且仅仅支持xml格式,那么它就会把xml格式返回回去。并且不会返回406状态码。所以默认值就是false


我们把这个值改成True。如果请求的类型和服务器所支持的类型不一致的情况下,就会返回406状态码




响应的header  的一种处理方法。

另外一种方法就是让他也支持xml格式。默认集合里面已经有json格式了。这里再把xml也添加进去。


默认是json的


在勾线xml格式


返回的类型也变成xml了


修改默认的格式

就是把集合的顺序调整一下,我们使用Insert方法再第0个位置加上xml格式

 

setup.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());

 



没有勾选,默认返回了xml格式  

响应的还是xml。所以说顺序决定了默认的格式。

对应的还有input的Formatters类型。实际上这是core 3.0之前的写法。

在.net core 3.0后有一个简单的写法。这个方法就会添加xml格式化器。应该是输入和输出的都会添加。

这样就可以用这种简单的方法了

运行程序再试试



勾选去掉。默认的还是json格式



如果写了一个不支持的header类型。随便乱写的一个格式

 

本人电脑上测试

加上输出xml和 请求头里面类型是设置为application.xml 都没有什么作用!!!!!

 

结束

 

posted @ 2020-03-21 23:06  高山-景行  阅读(185)  评论(0编辑  收藏  举报