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);
    }

}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM