今天在項目中看到了@RequestMapping中有兩個屬性,consumes和produces,於是就想弄清楚這兩個屬性是干什么的。
本來想貼自己項目的代碼,但是公司比較嚴格,所以不貼了
一、produces
指定返回值類型,並且可以設置返回值類型和返回值的字符編碼;
demo
/**屬性produces="application/json"時,返回json數據*/ @Controller @RequestMapping(value = "/{path}", method = RequestMethod.GET, produces="application/json") public Object permissionGet(@PathVariable String path, @MyParameter PermissionTransRQ permissionTransRQ) { //實現自己的邏輯調用 return null; } /**屬性produces="MediaType.APPLICATION_JSON_VALUE;charset=utf-8"時,設置返回數據的字符編碼為utf-8*/ @Controller @RequestMapping(value = "/{path}", method = RequestMethod.GET, produces="MediaType.APPLICATION_JSON_VALUE;charset=utf-8") public Object permissionGet(@PathVariable String path, @MyParameter PermissionTransRQ permissionTransRQ) { //實現自己的邏輯調用 return null; }
特別說明:produces="application/json"和注解@ResponseBody是一樣的效果,使用了注解其實可以不使用該屬性了。
二、consumes
指定處理請求當中的提交內容類型(Content-Type):application/json, text/html等;
demo
@Controller @RequestMapping(value = "/{path}", method = RequestMethod.POST, consumes="application/json") public Object permissionPost(@PathVariable String path, @RequestBody PermissionTransRQ permissionTransRQ) { //實現自己的邏輯調用 return null; }