zoukankan      html  css  js  c++  java
  • SpringBoot中前后端数据交互

    不只适用于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 的方式来接收数据。

  • 相关阅读:
    bzoj 3035 二分答案+二分图最大匹配
    bzoj 1058 bst
    bzoj 1093 缩点+DP
    bzoj 1452 二维树状数组
    bzoj 1968 数学
    bzoj 1034 贪心
    牛客小白月赛12 I (tarjan求割边)
    Loj 103、10043 (KMP统计子串个数)
    poj 2356 (抽屉原理)
    hdu 1907 (尼姆博弈)
  • 原文地址:https://www.cnblogs.com/panlei3707/p/11208811.html
Copyright © 2011-2022 走看看