• 0
  • 0
分享
  • JSON数据传输参数——软件测试圈
  • 恬恬圈 2022-12-14 10:52:26 字数 2388 阅读 1091 收藏 0

概述

前面我们说过,现在比较流行的开发方式为异步调用。前后台以异步方式进行交换,传输的数据使用的是JSON,所以前端如果发送的是JSON数据,后端该如何接收?

对于JSON数据类型,我们常见的有三种:

  • json普通数组([“value1”,“value2”,“value3”,…])

  • json对象({key1:value1,key2:value2,…})

  • json对象数组([{key1:value1,…},{key2:value2,…}])

对于上述数据,前端如何发送,后端如何接收?

JSON普通数组

步骤1:pom.xml添加依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

步骤2:PostMan发送JSON数据

1.png

步骤3:开启SpringMVC注解支持

在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。

@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换
@EnableWebMvc
public class SpringMvcConfig {
}

步骤4:参数前添加@RequestBody

//使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
    System.out.println("list common(json)参数传递 list ==> "+likes);
    return "{'module':'list common for json param'}";
}

步骤5:启动运行程序

4.png

JSON普通数组的数据就已经传递完成,下面针对JSON对象数据和JSON对象数组的数据该如何传递呢?

JSON对象数据

我们会发现,只需要关注请求和数据如何发送?后端数据如何接收?

请求和数据的发送:

{
"name":"itcast",
"age":15
}

3.png

后端接收数据:

@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
    System.out.println("pojo(json)参数传递 user ==> "+user);
    return "{'module':'pojo for json param'}";

启动程序访问测试

4.png

说明:

address为null的原因是前端没有传递数据给后端。

如果想要address也有数据,我们需求修改前端传递的数据内容:

{
"name":"itcast",
"age":15,
    "address":{
        "province":"beijing",
        "city":"beijing"
    }
}

再次发送请求,就能看到address中的数据

5.png

JSON对象数组

集合中保存多个POJO该如何实现?

请求和数据的发送:

[
    {"name":"itcast","age":15},
    {"name":"itheima","age":12}
]

后端接收数据:

@RequestMapping("/listPojoParamForJson")
@ResponseBody
public String listPojoParamForJson(@RequestBody List<User> list){
    System.out.println("list pojo(json)参数传递 list ==> "+list);
    return "{'module':'list pojo for json param'}";
}

启动程序访问测试:

7.png

小结

SpringMVC接收JSON数据的实现步骤为:

(1)导入jackson包

(2)使用PostMan发送JSON数据

(3)开启SpringMVC注解驱动,在配置类上添加@EnableWebMvc注解

(4)Controller方法的参数前添加@RequestBody注解

知识点1:@EnableWebMvc

名称@EnableWebMvc
类型配置类注解
位置SpringMVC配置类定义上方
作用开启SpringMVC多项辅助功能

知识点2:@RequestBody

名称@RequestBody
类型形参注解
位置SpringMVC控制器方法形参定义前面
作用将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

@RequestBody与@RequestParam区别

区别

  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】

  • @RequestBody用于接收json数据【application/json】

应用

  • 后期开发中,发送json格式数据为主,@RequestBody应用较广

  • 如果发送非json格式数据,选用@RequestParam接收请求参数


作者:小杰不想秃头

原文链接:https://blog.csdn.net/weixin_51020122/article/details/124654195

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 介绍随着 Web 应用的空前发展,前端业务逐渐复杂,为了处理这些复杂业务,前后端分离,出现了专门应对这种分离架构的应用开发框架,比如 Angular,React,Vue 等,从而也导致 Web 应用的复杂度大大增加,并出现了 SPA(Single Page web Application)。同时随着越来越多的用户使用移动设备访问 Web 应用,Web 应用也需要支持一些性能并不是很好的移动设备。所以为了度量和测试 Web 应用是不是在高复杂度的情况下,页面性能能满足用户的需求,我们需要对前端页面系统进行性能测试。前端页面性能测试本质上和本地应用性能测试类似,其性能和运行应用的设备的性能强相关,...
            0 0 1812
            分享
          •   汤姆猫在投资者关系活动中对是否受网游新规影响进行了回应,表示汤姆猫系列产品 80% 以上活跃用户来自于海外市场,国内用户占比较低。  汤姆猫家族 IP 系列游戏以广告收入为主,而非内购充值,2023 年上半年公司实现广告收入 51916.77 万元,占营业收入比重为 75.43%。  除国内外团队在研的《Talking Ben AI》(暂定名)、多模态 AI 汤姆猫、汤姆猫 AI 讲故事等 AI 交互产品之外,还储备了《汤姆猫图画册》《金杰猫的游乐场》《汤姆猫闯乐园》《我的汉克狗:海岛》《Sonic Dash:Endless Running》《Sonic Dash 2:SonicBoom》...
            0 0 446
            分享
          • IT之家 9 月 27 日消息,苹果 iOS 16.1 目前处于 Beta 测试阶段,其中包括对实时活动 API 的支持。该 API 允许开发者向锁屏界面或灵动岛添加实时通知。随着 iOS 16.1 的不断测试,苹果现已发布了完整的实时活动设计指南,其中概述了开发者在其 App 中添加实时活动的规范。对于苹果 iPhone 14 Pro 和 iPhone 14 Pro Max,两款新机的全新“灵动岛”设计可以让实时活动显示在屏幕顶部。而其他机型可以显示在锁屏界面。苹果官方列出了以下要求:为具有定义的开始和结束的任务和实时事件提供实时活动。只呈现最重要的内容。只在有新内容可用时更新实时活动,只在...
            0 0 1200
            分享
          • 当今软件开发中,接口测试已成为必不可少的一环。选择合适的接口测试工具对于程序员来说非常重要,因为这可以帮助他们更快、更高效地评估接口的质量和可靠性。为了提高测试效率和测试质量,自动化接口测试已经逐渐普及。然而,由于市场上有许多不同的接口测试工具,程序员们很难选择合适的工具。如何选择适合自己的工具呢?一、选择接口测试工具的考虑因素首先,得知道在选择接口测试工具时应该考虑哪些重要因素:1、易用性易用性是选择接口测试工具时首要考虑的因素。工具必须具有清晰的界面,能够让程序员快速、方便地操作。同时,工具也应该具有详细的帮助文档,方便程序员使用。2、功能性功能性是选择接口测试工具时第二重要的因素。工具必...
            0 0 924
            分享
          • 一、测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间二、QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)三、测试步骤1、添加线程组(线程数+准备时长+循环次数)1)线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)2)准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。3)循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总...
            10 9 2524
            分享
      • 51testing软件测试圈微信