RequestMapping中produces和consumes属性作用

注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json或者xml:

@RequestMapping(value=”/xxx”,produces = {“application/json;charset=UTF-8″})

@RequestMapping(value=”/xxx”,produces = {“application/xml;charset=UTF-8″})
但是必须要和@ResponseBody注解一起使用才可以,不加@ResponseBody注解相当于按照和返回String同名jsp页面解析自然就会报错。如果返过来,不加produces属性,只有@ResponseBody注解的话也是没有问题的,只是在浏览器中直接访问的时候有区别:
情况一:

@RequestMapping(value=”/xxx”,produces = {“application/json;charset=UTF-8″})
@ResponseBody
RequestMapping中produces属性作用
情况二:

@RequestMapping(value=”/xxx”)
@ResponseBody
RequestMapping中produces属性作用
区别很明显,第一种显示比较好看,当然这种接口不是这样用的,在调试阶段比较适合。
如果是xml格式也是浏览器显示有区别:

@RequestMapping(value=”/xxx”,produces = {“application/xml;charset=UTF-8″})
@ResponseBody
RequestMapping中produces属性作用
如果不加produces浏览器会把标签解析:

@RequestMapping(value=”/xxx”)
@ResponseBody
RequestMapping中produces属性作用
总的来说produces有两个好处:一个是浏览器查看方便(json自动格式化,带搜索),另一个可以防止中文乱码。

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

一、produces的例子

produces第一种使用,返回json数据,下边的代码可以省略produces属性,因为我们已经使用了注解@responseBody就是返回值是json数据:

@Controller
@RequestMapping(value = “/pets/{petId}”, method = RequestMethod.GET, produces=”application/json”)
@ResponseBody
produces第二种使用,返回json数据的字符编码为utf-8.:
@Controller
@RequestMapping(value = “/pets/{petId}”, produces=”MediaType.APPLICATION_JSON_VALUE”+”;charset=utf-8″)
@ResponseBody
二、consumes的例子(方法仅处理request Content-Type为“application/json”类型的请求。)
@Controller
@RequestMapping(value = “/pets”, method = RequestMethod.POST, consumes=”application/json”)

扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论