目录 springboot @RequestBody 接收字符串 @RequestBody 接收字符串 向接口传送 application/json 格式的数据 向接口传送 text/plain 格式的数据 替代 @RequestBody 的办法 @RequestBody接收前端传来的json值为空
目录
- 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,检查自己的函数接收参数叭
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。