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