RequestMapping注解中consumes与produces的区别

RequestMapping注解中consumes与produces的区别

原文链接:https://www.iteye.com/blog/yxjajl-2410047

一直没搞懂RequestMapping中consumes和produces的区别
今天看了下源码,总结一下

说到这两个参数,不得不先回顾一下HTTP协议Header中的两个东西
ContentType 和Accept

在Request中
ContentType 用来告诉服务器当前发送的数据是什么格式
Accept      用来告诉服务器,客户端能认识哪些格式,最好返回这些格式中的其中一种


consumes 用来限制ContentType
produces 用来限制Accept 


举例:
有个用户给我发了一个请求,

请求头中
     ContentType =application/json
     Accept      =  */*
就是说用户发送的json格式的数据,可以接收任意格式的数据返回

但是我的接口中定义了consumes={"application/xml"},produces={"application/xml"}
我只接收 application/xml 格式,也只返回xml格式

很明显,用户调不通这个接口

所以我改下consumes={"application/xml","application/json"},produces={"application/xml"}
注: 除了格式支持,还需要与数据对应的http转换器(HttpMessageConverter)此处先跳过    


MediaType 其实就是 application/xml,application/json 等类型格式

大多数情况我们只需要返回json格式的字符串而不需要返回json对象,所以加上@Responsebody就行了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值