zoukankan      html  css  js  c++  java
  • @RequestBody, @ResponseBody 注解理解

    @RequestBody, @ResponseBody 注解理解

    自己以前没怎么留意过,来实习后公司采用前后端分离的开发方式,前后端拿到的注释都是 json 格式的,这时候 @RequestBody, @ResponseBody 这两个注解就非常好用,下面详细介绍用法:

    @RequestBody

    1. 作用:
    • 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上;
    • 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上。
    2. 使用时机:
    GET、POST方式提交时, 根据 request header Content-Type 的值来判断:
    • application/x-www-form-urlencoded可选(即非必须,因为这种情况的数据 @RequestParam, @ModelAttribute 也可以处理,当然@RequestBody也能处理);
    • multipart/form-data不能处理(即使用@RequestBody不能处理这种格式的数据);
    • 其他格式:必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
    PUT 方式提交时, 根据request header Content-Type的值来判断:
    • application/x-www-form-urlencoded必须
    • multipart/form-data不能处理
    • 其他格式:必须
    3. 举个例子:

    也就是说,如果是 json 格式的数据,我们要传入的参数是一个对象,那就必须使用 @RequestBody

    @RequestMapping(value = "/test", Method = RequestMethod.POST, produces = "application/json;charset="UTF-8")
    @ResponseBody
    public JSONObject class Test(@RequestBody Test test) {
        String name = test.getName();
        // 将 name 回显
        Map<String, Object> map = new HashMap<>();
        map.put("name", name);
        JSONObject obj = JSONObject.fromObject(map);
        return obj;
    }
    

    @ResponseBody

    1. 作用:

    该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的body 数据区。

    2. 使用时机:

    返回的数据不是 html 标签的页面,而是其他某种格式的数据时(如 json、xml 等)使用。

    3. 举个例子:
    @RequestMapping(value = "/test", Method = RequestMethod.POST, produces = "application/json;charset="UTF-8")
    @ResponseBody
    public JSONObject class Test() {
        JSONObject obj = new JSONObject;
        obj.put("test", 1);
        // 将 obj 回显
        return obj;
    }
    

    参考:

    https://blog.csdn.net/walkerJong/article/details/7520896

    完。

  • 相关阅读:
    海尔U+的启发:让用户对智能家居拥有“话语权”
    关于hash和ico的一些关联
    二维码简单介绍
    卡特兰数 大数模板
    C++ Linux 多线程之创建、管理线程
    Objective-c开发教程--MRC和ARC混编
    APP 打包測试流程 从零開始
    hdu4848 求到达每一个点总时间最短(sum[d[i]])。
    表结构变更后出现的ERROR OGG-01161 Bad column index (88)
    【Linux学习】Ubuntu下内核编译(一)
  • 原文地址:https://www.cnblogs.com/weixuqin/p/11373402.html
Copyright © 2011-2022 走看看