springboot @RequestBody 接收字符串
- springboot 2.1.1.RELEASE
@RequestBody 接收字符串
1
2
3
4
5
|
@RequestMapping (method = {RequestMethod.POST}) public ResultEntity form1( @RequestBody String requestBody) throws UnsupportedEncodingException { logger.info( "================ request body ================" );\ logger.info( "request body is : {}" , requestBody); } |
向接口傳送 application/json 格式的數據
客戶端調用代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
$.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 格式的數據
客戶端調用代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
$.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 ,可以使用下面的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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,檢查自己的函數接收參數叭
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://sayyy.blog.csdn.net/article/details/117457645