springMvc REST 请求和响应
前言:
突然怎么也想不起来 springMvc REST 请求的返回 类型了! (尴尬+究竟) 然后本着 方便的想法 百度了一下
发现了个问题,大家在写 springMvc REST 的文档 和记录或者笔记的时候 。
只写到了 符合 REST 风格的 请求 ,而 响应信息 完全是 传统的 主体数据传递 。然而这并非 REST响应的 风格啊 !!!!
下面把自己整理的笔记发上来
关于MVC REST 请求的方式 格式1 @RequestMapping(value = "{itemCatId}", method = RequestMethod.GET) public ResponseEntity<TbItemParam> queryItemParamByItemCatid( @PathVariable Long itemCatId) { } 格式2 @RequestMapping(value = "{itemCatId}", method = RequestMethod.GET) @ResponseBody public ResponseEntity<TbItemParam> queryItemParamByItemCatid( @PathVariable("itemCatId") Long itemCatId) { } 格式3 @RequestMapping(value = "/destroy/{ConsumerID:^[0-9]*.*@[0-9]*}", method = RequestMethod.GET, produces = "application/json; charset=utf-8") @ResponseBody public ResponseEntity<String> destroyMqConsumer(@PathVariable String ConsumerID) { } 格式4 @RequestMapping(value = "{itemCatId}", method = RequestMethod.POST) public ResponseEntity<Void> saveItemParam(@PathVariable("itemCatId") Long itemCatId, @RequestParam("paramData") String paramDate) { } REST 响应的方式 try { TbItemParam queryitemParam = new TbItemParam(); queryitemParam.setItemCatId(itemCatId); return ResponseEntity.ok(queryitemParam); // 状态码是 200 return ResponseEntity.status(HttpStatus.CREATED).build(); // 状态码是 200 不返回 实体数据 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(queryitemParam); // 状态码是 200 返回 实体数据 } catch (Exception e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); // 状态码是 200 返回 实体数据 是null return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); // 状态码是 500 } 备注: 关于返回值是 List 的问题 建议自定义分装一个POJO @ResponseBody 注解的再次说明 该注解是通过请求头的带入的信息来 格式化对应的返回值的的!! produces = "application/json; charset=utf-8" 返回对象是一个 UTF-8格式的 JSON 对象 produces = "application/xml; charset=gbk" 返回对象是一个 gbk格式的 xml 对象 @RequestMapping("table") @Controller public class outTable { @RequestMapping(value = "/json", method = RequestMethod.GET, produces = "application/json; charset=utf-8") @ResponseBody public ResponseEntity<Clientinfo> querylist() { Clientinfo c = new Clientinfo(); c.setClientflag("100"); c.setClientname("1001"); c.setCrmcode(1002); c.setId(1); return ResponseEntity.ok(c); } @RequestMapping(value = "/xml", method = RequestMethod.GET, produces = "application/xml; charset=utf-8") @ResponseBody public ResponseEntity<Clientinfo> query() { Clientinfo c = new Clientinfo(); c.setClientflag("100"); c.setClientname("1001"); c.setCrmcode(1002); c.setId(1); return ResponseEntity.ok(c); } }