前端向后端传递数据的五种常见方式解析

作者:终端旅客时间:2026-10-31 14:46:23浏览:469

本文总结了前端向后端传递数据的五种主要方式。包括通过GET请求将参数拼接在URL后、利用URL占位符传递路径参数、使用Form表单序列化提交数据、通过POST发送JSON类型表单以及将普通数据转换为JSON字符串传输。每种方式均提供了前后端代码示例及接收参数方法,帮助开发者根据场景选择合适的数据交互方案。

第一种方式是通过GET请求,将参数直接拼接在URL地址后面。这种方式通常用于简单的数据查询,参数以键值对形式跟在问号之后。

$.ajax({
        url: "/order/userPage?page="+page+"&pageSize="+pageSize,    //请求的url地址  
        cache: "false",   //设置为false将不会从浏览器中加载请求信息
        async: "true",    //true所有请求均为异步请求
        dataType: "json", //请求返回数据的格式
        type:"get",      //请求方式
 
上面等同于==>>
async initData(){
 
   paging: {
      page: 1,
      pageSize: 5
   }
   const res = await orderPagingApi(this.paging) 
}
 
function orderPagingApi(data) {
    return $axios({
        'url': '/order/userPage',
        'method': 'get',
        //请求参数
        params: {...data}
    })
 
上面等同于==>>
async initData(){
 
   paging: {
      page: 1,
      pageSize: 5
   }
   const res = await orderPagingApi(this.paging) 
}
 
function orderPagingApi(data) {
    return $axios({
 
        'url': '/order/userPage',
 
        'method': 'get',
 
        'data': data
    })
 

在后端接收时,可以通过注解直接获取这些查询参数。例如在Java Spring框架中,可以使用@RequestParam注解来接收URL中传递的page和pageSize参数,或者依赖框架自动绑定同名参数。

@GetMapping("/order/userPage")
 
@ResponseBody
 
public R<Page> userPage(Integer page,Integer pageSize){}
 
或
 
@GetMapping("/order/userPage")
 
@ResponseBody
 
public R<Page> userPage(@RequestParam("page")Integer page,@RequestParam("pageSize")Integer pageSize){}

第二种方式是将参数嵌入到URL的路径中,后端通过路径占位符来接收。这种RESTful风格的做法常用于根据ID获取特定资源。

async initData(){
    const res = await addressFindOneApi(params.id)
}
 
​​​​​​​function addressFindOneApi(id) {
  return $axios({
    'url': `/addressBook/${id}`,
    'method': 'get',
  })
}

后端接收时,需使用@PathVariable注解来匹配URL中的占位符变量。例如,通过{id}获取具体的资源标识符,确保路径与后端接口定义一致。

@GetMapping("/addressBook/{id}")
@ResponseBody
 
public R<AddressBook> backList(@PathVariable("id")Long id){}

第三种方式是利用POST方法提交Form表单,并将表单数据序列化后传递给后端。这种方式适用于需要提交较多字段且希望保持数据可读性的场景。

async initData(){
    const res =await formAjax();
}
function formAjax() {
       $.ajax({
       url: "/login", 
       type: "post", 
       data: $("#form").serialize(),  // 对id为form的表单数据进行序列化并传递到后台

后端接收时,通常定义一个与表单字段对应的实体类(如User),Spring框架会自动将序列化的表单数据绑定到该实体类的属性上,无需手动解析每个字段。

@RequestMapping("/login")
@ResponseBody
//form表单的数据与User实体类的数据相对应
public String login (User user) {}

第四种方式同样是使用POST提交,但指定Content-Type为application/json。此时前端发送的数据格式为JSON字符串,适用于结构复杂或嵌套的数据传输。

async initData(){
    const res =await formAjax();
}
function formAjax() {
       $.ajax({
       url: "/login", 
       type: "post", 
       contentType: 'application/json',

后端接收时,必须使用@RequestBody注解来解析请求体中的JSON数据,并将其映射到对应的Java对象或Map中,确保数据类型匹配。

@RequestMapping("/login")
@ResponseBody
//form表单的数据与User实体类的数据相对应
public String login ( @RequestBody User user) {}

第五种方式是将前端普通数据对象手动转换为JSON字符串后,通过POST请求发送给后端。这种方式灵活性高,常用于需要精确控制数据格式的场合。

async initData(){
   paging: {
      page: 1,
      pageSize: 5
   }
   const res = await orderPagingApi(this.paging) 
}
function orderPagingApi(data) {
    return $axios({
        'url': '/order/userPage',
        'method': 'post',
         data: JSON.stringify(data),
    })

后端接收时,可以使用@RequestBody注解将JSON数据映射到Map或特定的实体类(如PageInfo)中,通过getter方法提取所需字段值。

@GetMapping("/order/userPage")
@ResponseBody
public R<Page> userPage(@RequesBody Map<Integer,Integer> map){
      Integer page = map.get("page");
      Integer pageSize = map.get("pageSize");   
}
或  ==>>
//假设PageInfo类中有属性与其相对应
@GetMapping("/order/userPage")
@ResponseBody
public R<Page> userPage(@RequesBody PageInfo pageInfo){
     Integer page = pageInfo.getPage();
     Integer pageSize = pageInfo.getPageSize();
}

综上所述,前端向后端传递数据的方式多样,开发者应根据具体业务需求、数据量大小及安全要求选择合适的传输方式。

本文介绍了前端向后端传递数据的五种常见方式及其后端接收方法。更多相关技术内容可参考本站过往文章或继续浏览后续系列教程,感谢支持!

作者最新文章