springboot @RequestBody 接收字符串实例

编辑: admin 分类: java 发布时间: 2021-12-04 来源:互联网
目录
  • springboot @RequestBody 接收字符串
    • @RequestBody 接收字符串
    • 向接口传送 application/json 格式的数据
    • 向接口传送 text/plain 格式的数据
    • 替代 @RequestBody 的办法
  • @RequestBody接收前端传来的json值为空

    springboot @RequestBody 接收字符串

    • springboot 2.1.1.RELEASE

    @RequestBody 接收字符串

        @RequestMapping(method = {RequestMethod.POST})
        public ResultEntity form1(@RequestBody String requestBody) throws UnsupportedEncodingException {
      logger.info("================ request body ================");\
      logger.info("request body is : {}", requestBody);
     }

    向接口传送 application/json 格式的数据

    客户端调用代码如下:

    $.ajax({
        url:'http://localhost/api/spd',
        data: JSON.stringify({name:'zhangsan', age: 18}),
        type:'POST',
        contentType: 'application/json',
        success:function(result){
            console.log(result);
        },
        error:function(error){
         console.log(error);
        }
    });
    

    服务端执行结果:

    00:11:55.972 [http-nio-8020-exec-5] INFO c.c.api.SpdApi - [form1,45] - request body is : {"name":"zhangsan","age":18}

    向接口传送 text/plain 格式的数据

    客户端调用代码如下:

    $.ajax({
        url:'http://localhost/api/spd',
        data: 'this is a message',
        type:'POST',
        contentType: 'text/plain',
        success:function(result){
            console.log(result);
        },
        error:function(error){
         console.log(error);
        }
    });

    服务端执行结果:

    23:46:04.953 [http-nio-8020-exec-1] INFO c.c.api.SpdApi - [form1,45] - request body is : 'this is a message'

    替代 @RequestBody 的办法

    如果不想用 @RequestBody ,可以使用下面的方法:

     protected String getRequestBody(HttpServletRequest request) {
      try {
       BufferedReader reader = request.getReader();
       char[] buf = new char[512];
       int len = 0;
       StringBuffer contentBuffer = new StringBuffer();
       while ((len = reader.read(buf)) != -1) {
        contentBuffer.append(buf, 0, len);
       }
       return contentBuffer.toString();
      } catch (IOException e) {
       e.printStackTrace();
      }  
      return "null";
     }
    

    @RequestBody接收前端传来的json值为空

    这个真的很脑抽。。。

    我忘了在函数接收处写@RequestBody,至于其他博主说需要在BO包中加@JsonProperty(value = "xxx"),

    或者什么驼峰命名法,也许是版本原因,没有这个必要,emmm,检查自己的函数接收参数叭

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

    【文章来自:高防ip处的文章,转载请说明出处】