本文主要研究的是关于@RequestBody的正确使用方法的相关内容,具体如下。

最近在接收一个要离职同事的工作,接手的项目是用SpringBoot搭建的,其中看到了这样的写法:

@RequestMapping("doThis")

public String doThis(HttpServletRequest request,

@RequestParam("id") Long id, // 用户ID

@RequestParam("back_url") String back_url, // 回调地址

@RequestBody TestEntity json_data // json数据,对于java实体类

){//...

这个是一个请求映射方法,然后用浏览器输入url:http://127.0.0.1:8080/test/doThis?id=1&back_url=url&json_data={"code":2,"message":"test"}

在这个方法中,使用@RequestParam获取参数,然后使用@RequestBody对json格式的参数转换为Java类型

在运行的时候发现报错:Required request body is missing

@RequestBody的使用需要加载MappingJackson2HttpMessageConverter,但是SpringBoot的官方文档提到,这个是默认已经加载的了,而且json字符串和javabean也没有书写的错误

因此考虑到应该是请求Content-Type的问题,因为使用浏览器输入url的方式没有办法定义Content-Type,因此spring无法发现request body

为了证实这个想法,自己书写一个请求类:

String add_url = "http://127.0.0.1:8080/test/doThis";

URL url = new URL(add_url);

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

connection.setDoInput(true);

connection.setDoOutput(true);

connection.setRequestMethod("POST");

connection.setUseCaches(false);

connection.setInstanceFollowRedirects(true);

connection.setRequestProperty("Content-Type","application/json");

connection.connect();

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

JSONObject obj = new JSONObject();

obj.put("code", -1002);

obj.put("message", "msg");

out.writeBytes(obj.toString());

out.flush();

out.close();

请求还是失败,经过调试,发现需要去掉所有的@RequestParam注解才能成功

总结

1、@RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json

2、直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json

以上就是本文关于解读@RequestBody的正确使用方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

java request body内容_解读@RequestBody的正确使用方法相关推荐

  1. SpringBoot 中 @RequestBody的正确使用方法

    SpringBoot 中 @RequestBody的正确使用方法 最近在接收一个要离职同事的工作,接手的项目是用SpringBoot搭建的,其中看到了这样的写法: [java] view plain  ...

  2. java request获取内容_JavaWeb - Http请求消息 - Request获取请求消息(基础)代码演示 - 小黑电脑...

    Http 概念:Hyper Text Transfer Protocol 超文本传输协议 传输协议 : 定义了,客户端和服务器端通信时,发送数据的格式 特点: 基于TCP/IP的高级协议 默认端口号: ...

  3. mybatis是什么_为什么SpringMVC可以正确解析方法参数名称,但MyBatis却不行?

    对Java字节码有一定了解的朋友应该知道,Java 在编译的时候,默认不会保留方法参数名,因此我们无法在运行时获取参数名称.但是在使用 SpringMVC 的时候,我发现一个奇怪的现象:当我们需要接收 ...

  4. 安全绳使用方法图解_安全绳的正确使用方法、使用注意事项及应用

    安全绳是一种用于连接安全带的辅助用绳,它是由合成纤维编织而成的,具有二重保护的作用,可以确保人在高空作业时的安全.安全绳的种类很多,每种不同的安全绳作用也是不一样的,今天小编就来为大家介绍一下安全绳的 ...

  5. java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程

    原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...

  6. java 删除二进制内容_二进制搜索树节点删除不删除替换Java

    我试图从二进制搜索树中删除节点.除了一个特定的情况,我可以成功删除树上的任何其他节点.如果目标节点有2个子节点,并且左子节点具有右子树,我可以找到正确的替换节点并将值切换到目标节点,但是永远不会删除替 ...

  7. java 复制文本内容_基于java文本复制的7种方式总结

    如下所示: package copy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  8. java 修改文件内容_用Java修改现有文件内容

    小编典典 如对类似问题的公认答案中所建议: 同时以写入模式打开一个临时文件,对于每一行,读取它,必要时进行修改,然后写入该临时文件.最后,删除原始文件并重命名临时文件. 根据您的实现,类似于以下内容: ...

  9. java数据类型代表价格_解读Java数据及数据类型内幕

    (2)字符型 计算机除了处理数值数据,还要处理字符数据.Java语言提供了一种char数据类型,用于字符数据.char类型占2个字节的存储空间,该类型可以存储英文字符,也可以存储单个汉字. char型 ...

最新文章

  1. 天池NLP中文预训练模型赛来了!
  2. 七自由度车辆稳定性数学模型和simulink求解
  3. springboot-springmvc请求参数获取与原理【长文预警,收藏慢啃】
  4. JZOJ__Day 9:【普及模拟】算法学习(sfxx)
  5. 推荐系统(工程方向)-策略平台
  6. javascript日历插件
  7. 机器学习之--数据构造,函数图显示
  8. .NET Core 3.0中的Cookie身份验证
  9. 17APLab4:图标、菜单、加速键、消息框 python
  10. python安装后如何使用-python运行环境,python安装后如何使用
  11. windows 2008R2鼠标移动到任务栏一直是漏斗状态
  12. JSPServlet相关
  13. [LeetCode] Best Time to Buy and Sell Stock
  14. 基于物联网平台开发手机混合 App
  15. 解决edge浏览器中idm插件不能自动捕捉下载链接的问题
  16. TCP 三次握手 四次挥手 tcpdump Flags
  17. swiper(轮播图)基本使用
  18. 开源免费的私有聊天软件 Akaxin
  19. 各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...
  20. 使用python爬取网站数据并写入到excel中

热门文章

  1. win10 游戏黑屏(英雄联盟 激战2)解决
  2. 原生js实现视差风格音乐播放器
  3. STM32使用stlink下载no unlink device found问题的解决
  4. configure: error: Curl library not found
  5. 银行携手基金推类“余额宝”产品
  6. MATLAB传递函数自定义输入
  7. 项目管理工作一点感悟
  8. 等量点电荷matlab,点电荷电场的MATLAB作图.pdf
  9. 计算机网络 万维网WWW
  10. TZC 1283: 简单排序 —— 归并排序