SpringBoot中前后端数据交互

摘要:
不只适用于SpringBoot工具:postman、IDEA目的:测试前后端数据的交互情况、交互过程出现的明确各种问题及其解决方法基础知识:Content-Type发送信息至服务器时内容编码类型,默认是。②Content-Type:application/json前端请求:后端响应1:只是对应,没有任何注解,出错首先它不会获取到任何值,然后因为age是int的,无法进行null的转换,导致报错java.lang.IllegalStateException:Optionalintparameter'age'ispresentbutcannotbetranslatedintoanullvalue....后端响应2:参数添加@RequestParam注解,出错Resolved[org.springframework.web.bind.MissingServletRequestParameterException:RequiredStringparameter'name'isnotpresent]结论:当前端以application/json格式上传即使用JSON字符串,后台使用@RequestParam是无法一一对应来获取参数的。

不只适用于SpringBoot

工具:postman、IDEA

目的:测试前后端数据的交互情况、交互过程出现的明确各种问题及其解决方法

基础知识:

Content-Type发送信息至服务器时内容编码类型,默认是( application/x-www-form-urlencoded 这种格式的特点就是,name/value 成为一组,每组之间用 & 联接)。

POST请求

① Content-Type:application/x-www-form-urlencoded

前端请求:

SpringBoot中前后端数据交互第1张

后端响应1:只是对应,没有任何注解

SpringBoot中前后端数据交互第2张

后端响应2:参数添加@RequestParam注解

SpringBoot中前后端数据交互第3张

后端响应3:参数添加@RequestBody注解,出现错误

SpringBoot中前后端数据交互第4张

错误:Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

后端响应4:参数用@RequestBody注解,是一个Java bean

SpringBoot中前后端数据交互第5张

错误:solved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

结论:

当前端以application/x-www-form-urlencoded格式上传数据时,后台可以使用@RequestParam或者不使用任何注解来获取参数。 后台不可以使用@RquestBody来获取参数,使用的话会报错误。

②Content-Type:application/json

前端请求:

SpringBoot中前后端数据交互第6张

后端响应1:只是对应,没有任何注解,出错

SpringBoot中前后端数据交互第7张

首先它不会获取到任何值,然后因为age是int的,无法进行null的转换,导致报错

java.lang.IllegalStateException: Optional int parameter 'age' is present but cannot be translated into a null value ....

后端响应2:参数添加@RequestParam注解,出错

SpringBoot中前后端数据交互第8张

Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present]

结论:

当前端以application/json格式上传即使用JSON字符串,后台使用@RequestParam是无法一一对应来获取参数的。

后端响应3:参数添加@RequestBody注解,出错

SpringBoot中前后端数据交互第9张

错误:Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.panlei.practiceboot.controller.UserController.addUser(java.lang.String,int,java.lang.String,java.lang.String)]

结论:

当前端以application/json格式上传即使用JSON字符串,后台使用@RequestBody是无法一一对应来获取参数的。

后端响应4:参数用@RequestBody注解,是一个Java bean,成功

SpringBoot中前后端数据交互第10张

后端响应4:参数用@RequestBody注解,是一个Map,成功

SpringBoot中前后端数据交互第11张

总的结论:

当前端使用application/json来传递数据的时候,后端只能使用 @RequestBody 以及 Java bean或者 map 的方式来接收数据。

免责声明:文章转载自《SpringBoot中前后端数据交互》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WinForm控件之【PictureBox】LINUX环境下,达梦数据库8配置ODBC连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity3D常用网络框架与实战解析 学习

Socket 1 usingSystem; 2 usingSystem.Collections.Generic; 3 usingSystem.Net; 4 usingSystem.Net.Sockets; 5 usingSystem.Text; 6 7 8 namespaceSocket服务端 { 9 classProgram { 10...

C# 字符串加密解密方法

这个是加密的算法的命名空间,使用加密算法前要引用该程序集 System.Security.Cryptography using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI...

基于Boost库的HTTP Post函数

两个函数的区别: 提交表单数据和提交文本数据 表单数据: request_stream << "Content-Type: application/x-www-form-urlencoded "; 文本数据: request_stream << "Content-Type: text/html "; #include <i...

redis分布式共享锁模拟抢单的实现

本篇内容主要讲解的是redis分布式锁,并结合模拟抢单的场景来使用,内容节点如下: jedis的nx生成锁 如何删除锁 模拟抢单动作 1.jedis的nx生成锁 对于分布式锁的生成通常需要注意如下几个方面: 创建锁的策略:redis的普通key一般都允许覆盖,A用户set某个key后,B在set相同的key时同样能成功,如果是锁场景,那就无法知道到底...

aspp.netMVC自定义视图引擎

采用xslt作为ASP.NETmvc的视图引擎有几个好处 1彻底的实现视图和逻辑的分离(采用ASPX你无法控制别人在ASPX里面是否写逻辑代码) 2彻底的实现强类型的MODEL(自己定义视图引擎只是先一种数据方式) 3借助MODEL序列化为XML,进行XSLT转换,实现页面个性定制 4xslt的基本语法可以完成一部分JS的工作,而这正是页面基本控件布局和展...

java加解密(一)

1、杂谈   1、古典密码学     核心:替换法/位移法(凯撒加密)     破解方法:频率分析法,即研究字母和字母组合在文本中出现的概率。   2、近代密码学:     恩尼格玛机     被图灵破解   3、现代密码学:     1、散列函数:散列函数,也叫杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常...