当前位置: 首页 > news >正文

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

相关文章:

  • 数字水印技术的研究现状与发展趋势
  • 简单登录系统
  • warning no match for this type name:xxx.xxx.xxx [Xlint:invalidAbsoluteTypeName]
  • 用UltraISO制作系统安装u盘
  • index merge的一次优化
  • python之下载每日必应壁纸
  • malloc与free函数用法
  • 通读现代软件工程之构建之法
  • Nagios 监控
  • Python使用UUID库生成唯一ID
  • MongoDB又不加密,8.09亿条个人详细记录泄露
  • jQuery模拟打字逐字输出代码
  • ES6语法(二) 函数
  • PowerShell Studio 创建可视化工具- 扫描软件1.0
  • springMVC的流程
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 2017-09-12 前端日报
  • 2018一半小结一波
  • conda常用的命令
  • create-react-app做的留言板
  • Docker 笔记(2):Dockerfile
  • extjs4学习之配置
  • javascript 哈希表
  • JAVA多线程机制解析-volatilesynchronized
  • leetcode388. Longest Absolute File Path
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React-生命周期杂记
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于Flux,Vuex,Redux的思考
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端面试题总结
  • 使用权重正则化较少模型过拟合
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • #define、const、typedef的差别
  • #宝哥教你#查看jquery绑定的事件函数
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Note)C++中的继承方式
  • (分布式缓存)Redis持久化
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (九十四)函数和二维数组
  • (七)理解angular中的module和injector,即依赖注入
  • (一) springboot详细介绍
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .a文件和.so文件
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .naturalWidth 和naturalHeight属性,
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容