zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }    
  • 相关阅读:
    .JDBC访问数据库的基本步骤是什么?
    文本的四种编码方式
    实现不在栈中产生对象
    字符串链接和复制
    堆和栈的区别(详细)
    产生随机数字
    利用返回引用来操作结构体
    inline 内联函数可以避免函数重定义问题
    五大内存分区,堆与栈的区别(转)
    Strategy模式
  • 原文地址:https://www.cnblogs.com/atliwen/p/REST.html
Copyright © 2011-2022 走看看