首页 > 编程语言 >2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@RequestParam

2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@RequestParam

时间:2024-01-26 18:34:13浏览次数:38  
标签:body Java 14 RequestParam param post 数据 请求

在HTTP请求中,POST方法通常用于向服务器发送数据,这些数据可以在请求的body中,也可以在URL的param中。不过,这两者的使用方式和适用场景是不同的。

Body:在POST请求中,body主要用于包含要发送到服务器的数据。这些数据通常是表单数据、JSON数据或其他类型的数据。当你需要在请求体中发送大量数据,或者数据包含敏感信息(如密码)时,应该使用body来发送数据。因为body中的数据在传输过程中是不可见的,所以比param更安全。另外,如果你需要发送非ASCII字符,也应该使用body。

Param:在POST请求中,param也可以用来发送数据,但这种方式不常见。通常,param更常用于GET请求中,用于在URL中传递参数。在POST请求中使用param时,参数会被附加到URL的末尾,并通过问号(?)和与号(&)进行分隔。由于param中的数据在URL中是可见的,所以不应该用于发送敏感信息。另外,由于URL的长度有限制,所以param也不适合发送大量数据。

总的来说,body和param在POST请求中都可以用来发送数据,但它们的适用场景和使用方式是不同的。通常情况下,如果需要发送大量数据或敏感信息,应该使用body;如果只需要发送少量非敏感数据,并且数据适合在URL中传递,可以考虑使用param。但需要注意的是,由于param在URL中可见,所以存在安全风险,应该谨慎使用。

我们可能会遇到一个问题,前端没错,后端没错,参数名称没错,可是就是前端明明有数据,提交到后端,后端偏偏没有接收到数据。

这大概率就是因为前后端数据传输方式不一致造成的。

在java中,post请求,@RequestParam接收参数,那么前端发起post请求,传参也应该放在param中
在java中,post请求,@RequestBody接收参数,那么前端发起post请求,传参应该放在body中

image

以上图代码为例子,是put请求,接收body的数据,接收对象为users

users具体字段如下:

image

那么,我们在前端传输这个数据的时候,你传过来的数据,要和users这个java对象的字段一致,才能成功被接受

例如前端传输的数据 是名字叫data的变量

data = {userId:xxx,userNickname,……}

要注意大小写,大小写也不能错。

三 post方式传param参数


// 统一的post请求方法
// 统一的post请求方法,发送数据在请求体中
export function post(url, data = {}) {
    return axiosInstance.post(url, data);
}

// 统一的post请求方法,发送数据在查询参数中
export function postWithParams(url, params = {}) {
    return axiosInstance.post(url, null, { params });
}

@RequestBody和@RequestParam

一个方法中,可以有多个@RequestParam,但是只能有一个@RequestBody

在Spring MVC和Spring Boot的web控制器中,我们经常使用@RequestParam@RequestBody注解来处理HTTP请求参数。这两个注解的作用和用法有所不同:

  1. @RequestParam

    • 主要用于处理查询参数和表单数据(application/x-www-form-urlencoded)。
    • 可以将请求参数绑定到一个或多个方法参数上。
    • 可以在一个方法中使用多个@RequestParam注解,以绑定多个请求参数。
    • 如果请求参数名和方法参数名相同,可以省略@RequestParam注解。
    • 示例:public String myMethod(@RequestParam String param1, @RequestParam String param2)
  2. @RequestBody

    • 主要用于处理请求体中的数据,如JSON、XML等。
    • 它将整个请求体映射到一个Java对象上。
    • 在一个方法中,通常只能有一个@RequestBody注解,因为请求体只能被读取一次。
    • 示例:public String myMethod(@RequestBody MyObject myObject)

因此,一个方法中可以有多个@RequestParam来绑定多个查询参数或表单数据,但通常只能有一个@RequestBody来处理整个请求体的数据。这是因为HTTP请求体(body)通常被设计为只能被读取和解析一次,而查询参数和表单数据则可以更容易地被多个参数接收和处理。

标签:body,Java,14,RequestParam,param,post,数据,请求
From: https://www.cnblogs.com/mllt/p/17990445/project202401-14

相关文章

  • 基于Java和Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......
  • The artifact mysql:mysql-connector-java:jar:8.0.33 has been relocated to com.mys
    Theartifactmysql:mysql-connector-java:jar:8.0.33hasbeenrelocatedtocom.mysql:mysql-connector-j:jar:8.0.33:MySQLConnector/Jartifactsmovedtoreverse-DNScompliantMaven2+coordinates.1.异常信息Theartifactmysql:mysql-connector-java:jar:8.0.33hasb......
  • 【JAVA基础】String、StringBuilder和StringBuffer的区别——巨详细
    先给答案String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。源码先看看jdk1.8中关于String、StringBuilder和StringBuffer部分的源码,我们看某个类或者某个属性是否不可变首先要看修饰类的关键字是什么,final表示不可......
  • 基于Java+Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的利
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......
  • jmeter 将response body内容全部导出并保存到文件
    1.使用正则表达式,获取response内容2.使用beanshell后置处理器处理并保存数据脚本:importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importorg.apache.jmeter.samplers.SampleResult;Stringseq=vars.get("seq");//使用变量获取正则......
  • Java 应用部署包优化经验分享
    背景最近接手了一个2018年的老项目,因为太久远了,功能上的代码不敢乱动。但是这个项目还有一个问题,打包模块打出的全量包部署不起来。拿到这个项目的部署包,400多兆,网速慢的情况下,下载、上传都得好半天。分析了一下部署包,决定先优化一下,本文记录这个Java应用的部署包优化过程。优......
  • Java web 应用程序的部署方式有哪些
    当我们开发完一个JavaWeb应用程序后,接下来需要将其部署到服务器上,以便用户可以通过浏览器访问。本文将介绍几种常见的JavaWeb应用程序的部署方式。一、独立容器独立容器是最常见的部署方式之一,它是指将JavaWeb应用程序打包成一个独立的WAR文件,然后将该WAR文件部署到独立的Servle......
  • 使用Java读取Excel文件数据
    通过编程方式读取Excel数据能实现数据导入、批量处理、数据比对和更新等任务的自动化。这不仅可以提高工作效率还能减少手动处理的错误风险。此外读取的Excel数据可以与其他系统进行交互或集成,实现数据的无缝传输和共享,满足特定项目的需求。本文将从以下三个方面介绍如何通过Java......
  • IDEA基于maven创建Java web项目
    idea:2022.2.3 IDEA新建项目,更改项目名称,有需要的可以更改项目地址,将Buidsystem从intelliJ更改到Maven 在pom.xml中添加依赖<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><......
  • Java_5 字符串
    Java字符串title:(在线学习平台)link:(https://www.acwing.com/)cover:(https://cdn.acwing.com/media/activity/surface/log.png)1.字符与整数的联系——ASCII码每个常用字符都对应一个-128~127的数字,二者之间可以相互转化。注意:目前负数没有与之对应的字符。import......