前言:
突然怎么也想不起來 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); } }