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

}    
原文地址:https://www.cnblogs.com/atliwen/p/REST.html