不只适用于SpringBoot

工具:postman、IDEA

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

基础知识:

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

POST请求

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

  前端请求:

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

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

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

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

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

错误: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

  前端请求:

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

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

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

 

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

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

结论:

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

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

错误: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,成功

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

总的结论:

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

转载于:https://www.cnblogs.com/panlei3707/p/11208811.html

SpringBoot中前后端数据交互相关推荐

  1. 详解 AJAX-SpringBoot 前后端数据交互

    详解 AJAX-SpringBoot 前后端数据交互 1. Ajax 概述 Ajax 的英文全称是 "Asynchronous JavaScript and XML",即 &quo ...

  2. Android---SpringBoot实现前后端数据交互

    Android-SpringBoot实现前后端数据交互 星光不问赶路人,时间不负有心人 这篇是针对android传数据到后台springboot,使用Xutils框架 使用Xutils框架 关于xut ...

  3. 前后端数据交互方法 汇总

    这篇文章给大家介绍几种常用的前后端数据交互方法,并给出使用建议.以提高前后端协同开发的效率.非常的详细,推荐给小伙伴们,有需要的小伙伴可以参考下. 1.HTML赋值 输出到 Element 的 val ...

  4. 干货 | 万字长文全面解析GraphQL,携程微服务背景下的前后端数据交互方案

    作者简介 古映杰,携程研发高级经理,负责前端框架和基础设施的设计.研发与维护.开源项目react-lite和react-imvc作者. 前言 随着多终端.多平台.多业务形态.多技术选型等各方面的发展, ...

  5. ajax连接前后端原理,前后端数据交互方法和原理

    前后端数据交互方法和原理 发布时间:2018-10-28 11:25, 浏览次数:742 对于想要搞web的新手而言,会用html+css+javascript实现一个页面没什么太大的困难,但是想要前 ...

  6. 前后端数据交互——ajax技术

    在实际开发过程中,前端页面通常需要根据后台数据实现动态生成和实时更新,因此如何实现前后端数据交互成了开发过程中的难题. 现将使用ajax技术解决前后端数据的交互: (1)ajax技术介绍: ajax一 ...

  7. 前后端数据交互|分页查询|表格-双向绑定|get和post的区别

    目录 1 前后端数据交互 1.1 前端代码 部署在 前端服务器 1.2 前端代码 在 浏览器展示(只展示页面,没有数据)----自给自足 1.3 前端/浏览器 请求 后端数据 (后端死数据)----给 ...

  8. 软件测试的交互,软件测试--前后端数据交互

    作为一个合格的软件测试人员, 能够熟练定位bug的位置是属于前端还是后端,是必备技能之一.所以就需要明白前后端数据是怎么进行交互的. 一.网站数据处理主要分为三层 第一层,表示层,这部分可以用HTML ...

  9. 基于axios前后端数据交互

    基于axios前后端数据交互 一.get 1.前端 <!DOCTYPE html> <html lang="en"> <head><met ...

  10. 超详细总结:前后端数据交互原理

    最近开始接触前后端的一些知识,查了很多资料,今天把互联网产品的前后端数据交互做个总结留做笔记. 互联网产品的前后端数据交互是通过一个通讯协议完成.前后台交互的协议主要包括HTTP,FTP,SMTP,T ...

最新文章

  1. poj3784 Running Median查找中位数
  2. 设计模式学习(一)——策略模式
  3. 《程序员修炼之道》笔记(九)
  4. c语言cis,c语言小白学习历程第五篇
  5. 码云怎么创建公开的仓库_使用码云或GitHub搭建简单的个人网站(补充hexo搭建博客)...
  6. ac ap原理、_AP面板是什么?家庭AC+AP的组网方式,真的适合所有人吗?
  7. mysql left join第一个_MySQL 之 LEFT JOIN 避坑指南
  8. ios mysql数据库查询语句_ios fmdb数据库查询语句
  9. python改文件名_python 怎么改文件名
  10. 腾讯专家深度解析赛题,现场答疑助力上分!
  11. CUDA初探—环境配置
  12. 【Stanford Online】Engineering: Algorithms1 NO.4 The Master Method
  13. Abaqus软件2021新版本新功能详解
  14. windows winrar 指令_WINRAR 命令行语法
  15. 十进制进制法_进制转换方法(进制转换方法的口诀)
  16. 逻辑面试题:猴子搬香蕉
  17. 【数据结构】人名查询哈希表设计(线性探测法)
  18. emcc生成wasm,wast,bc文件的方法
  19. iOS审核总被拒?腾讯教你提升iOS审核通过率!
  20. DSL 领域特定语言

热门文章

  1. Jepsen mysql_Hello Clojure - Jepsen
  2. 为什么下拉框拉不下来_为什么分手后对方不删除拉黑你,但又不和你复合?
  3. 【算法笔记HDU4825】Xor Sum(01字典树模版)
  4. 考研调剂 计算机科学 软件,2020年四川大学计算机学院(软件学院)考研调剂信息...
  5. C/C++[算法入门]
  6. 机器学习- 吴恩达Andrew Ng Week7 知识总结Support Vector Machines
  7. Mac OS 区块链hyperledger环境搭建、环境架构介绍、环境如何用、部署 Chaincode、智能合约的调用
  8. 1 1 2 2 3 ...java_java 接收一个键盘输入的整数,计算1-1/2!+1/3!-1/4!.....1/n!
  9. Climbing Stairs @python
  10. 149.直线上最多的点数