Spring @RequestBody注解 和 @RequestMapping注解 header 传参的区别

2023-05-16

        Spring @RequestBody注解 和 @RequestMapping注解 header 传参的区别

一、前言

        近期项目开发中,通用的处理方法是:前端以json形式传参,后端的SpringMVC接收json参数,映射倒java bean中,再进行处理。 遇到一个问题,有些接口限制了 @RequestMapping 的header 属性为json类型,有的没有限制,那么这个header属性是否要设置呢?

@RequestMapping(value = "/", headers = {"Content-Type=" + MediaType.APPLICATION_JSON_UTF8_VALUE})

        json传参是否和header有关系呢? 由于json传参需要使用 @RequestBody 注解 , 则以 是否有 @RequestBody是否有header属性 设置,组合起来 四种情况,进行测试。

  • 无 @RequestBody注解, 无 header
  • 无 @RequestBody注解, 有 header
  • 有 @RequestBody注解, 无 header
  • 有 @RequestBody注解, 有 header

二、代码演示

        1、按照 是否有 @RequestBody 和 是否有header属性 设置 , 四种组合情况,代码如下:

/**
 * Description: 无 @Req注解, 无 header
 * <br> 结论: 前端json传参,无法接收到
 * @param userParam
 * @return com.runcode.springboottourist.entity.UserParam
 * @version v1.0
 * @author wu
 * @date 2023/2/3 10:30
 */
@RequestMapping("/reqNoHeaderNo")
public UserParam reqNoHeaderNo(UserParam userParam){
    log.warn("无 @Req注解, 无 header :{}", JSON.toJSONString(userParam));
    return userParam;
}

/**
 * Description: 无 @Req注解, 有 header
 * <br> 结论: 前端json传参,无法接收到
 * @param userParam
 * @return com.runcode.springboottourist.entity.UserParam
 * @version v1.0
 * @author wu
 * @date 2023/2/3 10:34
 */
@RequestMapping(value = "/reqNoHeaderYes", headers = {"Content-Type=" + MediaType.APPLICATION_JSON_UTF8_VALUE})
public UserParam reqNoHeaderYes(UserParam userParam){
    log.warn("无 @Req注解, 有 header :{}", JSON.toJSONString(userParam));
    return userParam;
}

/**
 * Description: 有 @Req注解, 无 header
 * <br> 结论: 前端json传参,可以 接收到
 * @return com.runcode.springboottourist.entity.UserParam
 * @version v1.0
 * @author wu
 * @date 2023/2/3 10:36
 */
@RequestMapping(value = "/reqYesHeaderNo")
public UserParam reqYesHeaderNo(@RequestBody UserParam userParam){
    log.warn("有 @Req注解, 无 header :{}", JSON.toJSONString(userParam));
    return userParam;
}

/**
 * Description: 有 @Req注解, 有 header
 * <br> 结论: 前端json传参,可以 接收到
 * @param userParam
 * @return com.runcode.springboottourist.entity.UserParam
 * @version v1.0
 * @author wu
 * @date 2023/2/3 10:37
 */
@RequestMapping(value = "/reqYesHeaderYes", headers = {"Content-Type=" + MediaType.APPLICATION_JSON_UTF8_VALUE})
public UserParam reqYesHeaderYes(@RequestBody UserParam userParam){
    log.warn("无 @Req注解, 有 header :{}", JSON.toJSONString(userParam));
    return userParam;
}

        2、使用postman 以json形式传参,分别测试四个接口,结果如下:

1. 无法接收到参数
2. 无法接收到参数
3. 正常接收到参数
4. 正常接收到参数

三、总结

        1、前端以json形式传参,使用 @RequestBody 注解,即可接收到参数与header属性是否设置是无关的

        2、深度的学习: @RequestBody 实现json序列化的原理@RequestMapping 各个属性的作用。 请自行了解,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring @RequestBody注解 和 @RequestMapping注解 header 传参的区别 的相关文章

随机推荐

  • 偏振光相机2——索尼大法

    Stokes参量 在上一篇 偏振光相机 偏振光 中 xff0c 我们知道偏振光有线性偏振光 椭圆偏振光 圆偏光 那么如何定量的描述偏振光呢 xff1f Stokes矢量是一种广泛用来描述偏振光属性的方法 图1 不同类型的偏振光 线性偏振光和
  • 偏振光相机3——偏振应用

    在之前的2篇中 xff0c 介绍了偏振光的基本概念和基于SONY最新CMOS偏振传感器芯片的相机 在本篇中 xff0c 我们来看看偏振相机的一些应用 偏振相机的应用离不开偏振光 xff0c 那么先看看如何得到偏振光信息 如何获取偏光 在 偏
  • 【干货】生成对抗网络GANs算法在医学图像领域应用总结

    Goodfellow等人 介绍了生成对抗网络 xff08 GAN xff09 以模拟数据分布 由于与两个基本属性相关的原因 xff0c GAN可以合成真实图像 GAN是一种无监督的训练方法 xff0c 可以通过类似于人类学习图像特征的方式获
  • 图像算法之3D人脸识别技术原理概述

    随着深度学习技术的进步 xff0c 面部相关任务的研究也成为学术界和工业界的热门话题 众所周知的面部任务通常包括面部检测 xff0c 面部识别 xff0c 面部表情识别等 xff0c 其主要使用2D RGB面部 xff08 通常包括一些纹理
  • 如何使用OpenCV计算机视觉检测帕金森病图片

    在本教程中 xff0c 您将学习如何使用OpenCV和机器学习在手绘的螺旋和波浪图像中自动检测帕金森病 本教程来自来自巴西的博士生Joao Joao有兴趣利用计算机视觉和机器学习基于几何图形 xff08 即螺旋和符号波 xff09 自动检测
  • OpenCV快速寻找图像差异

    如何使用结构相似性指数 xff08 SSIM xff09 将两个图像与Python进行比较 使用这种方法 xff0c 我们能够轻松确定两个图像是否相同或由于轻微的图像处理 xff0c 压缩伪像或有目的的篡改而产生差异 今天我们将扩展SSIM
  • C++17使用std::optional表示一个可能存在的值

    文章目录 前言返回一个bool值使用 std optional 改写总结 前言 平时写代码会遇到一种传递参数特殊值标记特殊流程 xff0c 或者函数返回值存在魔法数的情况 xff0c 很需要一种标记参数或返回值状态的结构 xff0c 那么在
  • Redhat进程管理

    进程管理 概论 xff1a 程序 xff1a 静态的代码 xff0c 占用磁盘空间 进程 xff1a 动态的代码 xff0c 占用内存 cpu xff08 提供服务的主体 xff09 进程的唯一标识 xff1a PID 编号 父进程 子进程
  • ETCD 高可用集群 Centos7

    ETCD 高可用集群 在本地三台虚拟机以static方式搭建ETCD集群测试环境 xff0c 均为Centos7 一 准备工作 1 主机名及IP 主机名IPvm5192 168 56 10vm6192 168 56 11vm7192 168
  • Python 蓝桥杯 七段码

    一 题目描述 二 题目分析 我使用的是暴力解决 xff0c 因为一共就7位 xff0c 但是容易出现漏算或多算 xff0c 经过很久的找错误和改正才得到答案80 一个较易弄错的问题就是出现3中组合 xff1a abde afcd bcef
  • Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml

    Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml 一 转换代码 1 XML字符串转换为JSON description XML字符串转换为JSON 64 param strXM
  • 5年的人寿保险 、定期存款 和 基金定投 计划对比

    5年的人寿保险 定期存款 和 基金定投 计划对比 一 5年人寿保险情况 市面上普遍的5年人寿保险 xff0c 预期分红的利息是 4 2 情况 xff0c 实际也存在少分 或者不分红的可能 xff0c 承诺的保本利息在不到2 的情况 既然为保
  • Java8 Optional 类常用方法 Java8 Optional orElse 、orElseGet 、orElseThrow 方法区别

    Java8 Optional 类常用方法 Java8 Optional orElse orElseGet orElseThrow 方法区别 一 概述 Optional 类 xff0c 是Java8 新增加的一个对象容器 主要的功能有 xff
  • Java 以数据流的形式发送数据request Java 数据封装到request中

    Java 以数据流的形式发送数据request Java 数据封装到request中 一 描述 1 在做微信支付结果通知的时候 xff0c 看到一个描述 xff1a 微信会把相关支付结果及用户信息通过数据流的形式发送给商户 xff0c 那么
  • 2023北京旅行计划 2023带父母北京旅行计划

    2023北京旅行计划 2023带父母北京旅行计划 一 概述 2023年开始啦 xff0c 疫情也差不多告别一段落 准备安排父母来我工作的城市 北京 xff0c 旅行一番 xff0c 逛一逛 xff0c 看一看 大致的事项 xff1a 1 体
  • Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据

    Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据 一 需求描述 在使用postman调试接口时 xff0c 若遇到内网的环境 xff0c 无法通过账户同步数据 xff1b 在A
  • Idea 设置打开多个文件 Idea打开多个Tab页 Idea打开多行tab页

    Idea 设置打开多个文件 Idea打开多个Tab页 Idea打开多行tab页 一 情景描述 在使用idea的时候 xff0c 经常会打开多个java文件 xff0c 当打开文件达到一定数量时 xff0c 会出现文件折叠在一起的情况 xff
  • 推荐一个C++枚举转字符串的开源项目magic_enum

    文章目录 前言magic enum简单介绍具体使用原理简述局限性 简化与改进总结 前言 C 43 43 11引入了强类型的枚举类 enum class 用来代替旧风格枚举enum xff0c 新引入的 enum class 具有诸多优点 x
  • Idea 运行多个微服务 Idea 一个服务开启多个端口运行 idea 开启多个端口服务

    Idea 运行多个微服务 Idea 一个服务开启多个端口运行 idea 开启多个端口服务 一 情景描述 在使用idea 练习微服务项目时 xff0c 如 要测试负载均衡功能 xff0c 那么一个项目需要开启多个不同端口的服务 xff0c 这
  • Spring @RequestBody注解 和 @RequestMapping注解 header 传参的区别

    Spring 64 RequestBody注解 和 64 RequestMapping注解 header 传参的区别 一 前言 近期项目开发中 xff0c 通用的处理方法是 xff1a 前端以json形式传参 xff0c 后端的Spring