springboot @RequestBody 接收字符串實例

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,檢查自己的函數接收參數叭

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: