当前位置: 首页 > news >正文

body和后台接口入参格式不一样,为什么可以正确接收

在使用 Postman 进行接口请求时,发送的参数是通过 请求体 (Body) 传递的。后台的参数接收名称(如 operationEmployeeName)是否能够正确接收到数据,主要依赖于 请求体格式后台参数映射的规则。我们来详细分析一下原因。

1. 请求体格式与参数映射规则

Postman 发送请求时,通常有几种不同的格式来传递数据。最常见的有两种格式:

(a) Form-data / x-www-form-urlencoded

这是表单提交的常见格式,参数通常以 key=value 的方式传递。后台通常会通过 参数名 来接收对应的值。

例如,Postman 的 Body 部分使用 x-www-form-urlencoded 发送参数:

KeyValue
operation_employee_name张三

后台接收时会使用 operation_employee_name 作为请求体中的参数,若后台使用了合适的框架或技术(如 Spring Boot),会通过映射机制将 operation_employee_name 自动转换为后台方法的参数。

(b) JSON 格式

如果使用 JSON 格式来传递参数,Postman 会把参数组织成一个 JSON 对象。

例如,发送请求时使用 rawJSON 格式:

 

{"operation_employee_name": "张三"
}

后台接收到这个 JSON 数据后,通常使用反序列化(如 @RequestBody 注解)将其映射为 Java 对象。假设后台有一个对应的类,参数命名为 operationEmployeeName,框架(如 Spring)会自动进行 驼峰命名法转换,将请求体中的 operation_employee_name 映射为 operationEmployeeName

2. 后台如何接受参数:命名规则

后台的 operationEmployeeName 可以成功接收到传递的数据,通常是因为:

(a) Spring 框架的自动映射

如果后台是基于 Spring Boot 等框架,Spring 会自动进行参数的映射和转换。

  1. 参数名映射:Spring 会根据请求体中的参数名称进行匹配。如果参数名为 operation_employee_name(下划线分隔),而后台接收的是 operationEmployeeName(驼峰命名),Spring 会自动将下划线命名转为驼峰命名,从而完成正确的映射。

  2. @RequestParam@RequestBody 注解

    • 对于 @RequestParam 注解(用于查询参数或表单数据),Spring 会直接匹配参数名。
    • 对于 @RequestBody 注解(用于请求体中的 JSON 数据),Spring 会通过 Jackson 等库自动映射到 Java 对象,进行 JSON 到 Java Bean 的转换,并处理命名规范的差异。

    示例:

  1. @PostMapping("/submit")
    public ResponseEntity<String> submit(@RequestBody Employee employee) {// Spring 会将 operation_employee_name 映射为 operationEmployeeNameString name = employee.getOperationEmployeeName();// 处理业务return ResponseEntity.ok("Received: " + name);
    }
    

    在这个例子中,Employee 类的属性 operationEmployeeName 对应的是传入 JSON 中的 operation_employee_name 字段。

(b) 手动映射(如使用 @RequestParam

如果后台使用的是 @RequestParam 注解来接收请求参数,并且 POST 请求传递的是 application/x-www-form-urlencodedmultipart/form-data 数据,后台可以通过字段名称直接接受参数。

示例:

@PostMapping("/submit")
public ResponseEntity<String> submit(@RequestParam String operationEmployeeName) {// operationEmployeeName 会自动从请求体中提取值return ResponseEntity.ok("Received: " + operationEmployeeName);
}

如果 Postman 请求的 body 使用 x-www-form-urlencoded 格式:

KeyValue
operation_employee_name张三

后台的 operationEmployeeName 就会接收到 "张三"。

3. 自动转换的机制

后台框架(如 Spring)通常会基于 命名转换规则 来自动将请求体中的参数名称与 Java 方法参数或类属性之间进行匹配。这包括:

  • 驼峰命名法和下划线命名法转换:如果请求体中的参数是 operation_employee_name,后台的 operationEmployeeName 可以通过自动转换机制匹配。
  • JSON 解析库的支持:如 Jackson 或 Gson 会处理这种命名转换(将 operation_employee_name 映射为 operationEmployeeName)。

总结:

后台的 operationEmployeeName 能够接收到参数,是因为:

  1. 请求体中的参数 operation_employee_name 在传递到后台时,经过自动映射和命名转换(如驼峰命名法转换)。
  2. 使用框架(如 Spring Boot)时,框架自动根据请求参数名与后台方法参数之间的规则进行映射。

这种机制通常不需要开发者手动干预,框架会自动完成映射工作,确保数据能够正确传递。

http://www.lqws.cn/news/501193.html

相关文章:

  • 基于海思3403平台开发4目360°全景拼接相机方案
  • go语言多重复值
  • Linux 设备驱动之网络设备驱动
  • 新中国风通用读书颂词分享PPT模版
  • 对手机屏中断路和短路的单元进行切割或熔接,实现液晶线路激光修复原理
  • libevent(1)之基础概述
  • bmc TrueSight 监控 Oracle 11g 配置
  • Flutter 与 原生(Android/iOS)通信 Platform Channel
  • ASP.NET Core 中 Kestrel 的应用及在前后端分离项目中的角色
  • SnowConvert:自动化数据迁移的技术解析与最佳实践
  • 深入JVM:从零到实战,解锁Java性能与调优的终极武器
  • JDK 17 中 java.lang.System 常用方法及应用场景
  • 对于高考边界的理解以及未来就业层级的学习与思考
  • 鸿蒙HarmonyOS 5开发:AlphabetIndexer组件在通讯录中的高效索引实现(附:代码)
  • Linux环境下MariaDB如何实现负载均衡
  • 华为云Flexus+DeepSeek征文 | 基于CCE容器的AI Agent高可用部署架构与弹性扩容实践
  • C++修炼:异常
  • Excel学习04
  • 代理模式:控制对象访问的守门员[特殊字符],优雅实现功能增强与访问控制!
  • 嵌入式Linux驱动开发基础-1 hello驱动
  • 【大模型问题】ms-swift微调时,显存持续增长原因分析与解决方案
  • 【CS创世SD NAND征文】基于全志V3S与CS创世SD NAND的物联网智能路灯网关数据存储方案
  • Nginx负载均衡
  • Docker 数据持久化完全指南:Volume、Bind Mount 与匿名卷
  • OpenCV CUDA模块设备层-----创建一个“常量指针访问器” 的工具函数constantPtr()
  • Docker Compose与私有仓库部署
  • Vue3+TypeScript移动端H5播放器选型指南:M3U8与主流播放器深度解析
  • 聚宽量化——股票时间序列函数
  • 传统消防演练与 VR 消防演练的区别有哪些
  • Unreal5从入门到精通之如何录制360°VR全景视频