几种HTTP请求参数的简单介绍

目录

一、概述

二、查询参数

三、JSON格式参数

四、x-www-form-urlencoded

五、multipart/form-data

一、概述

在 Web 开发中,前端需要与后端服务器进行数据交互,常见的方式是通过 HTTP 请求发送数据给后端。

本文章将介绍以下几种常用的请求参数传递方式:

  • Query 参数
  • JSON 格式参数
  • application/x-www-form-urlencoded
  • multipart/form-data

其中,Query 参数是URL 中的查询参数,剩余三种都是请求体中的参数。

二、查询参数

查询参数是附加在 URL 末尾的键值对,用于在 GET 请求中传递参数,以问号 ? 开始,多个参数之间用 & 分隔。

1.使用场景

  • 适用于 GET 请求

  • 传递非敏感数据,如搜索关键词、分页信息、过滤条件等

2.使用方法

示例:

js 复制代码
// 假设要发送 GET 请求到 /api/users?page=1&size=10
axios.get('/api/users', {
  //params 对象:用于指定查询参数,Axios 会自动将其转换为查询字符串附加到 URL 后面。
  params: {
    page: 1,
    size: 10
  }
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

3.后端接收

java 复制代码
@GetMapping("/api/users")
public ResponseEntity<List<User>> getUsers(
    //@RequestParam:用于获取查询参数。
    @RequestParam("page") int page,
    @RequestParam("size") int size) {
    // 处理逻辑
}

三、JSON格式参数

1.使用场景

  • 适用于 POSTPUTPATCH 等需要在请求体中发送数据的请求

  • 传递结构化的数据,如对象、数组

2.使用方法

js 复制代码
// 发送 POST 请求到 /api/users,发送 JSON 数据
// 默认情况下,Axios 会将对象序列化为 JSON,并设置 Content-Type: application/json
axios.post('/api/users', {
  name: '张三',
  email: 'zhangsan@example.com'
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

3.后端接收

java 复制代码
@PostMapping("/api/users")
//@RequestBody:用于将请求体中的 JSON 数据反序列化为对应的对象。
public ResponseEntity<User> createUser(@RequestBody User user) {
    // 处理逻辑
}

四、x-www-form-urlencoded

application/x-www-form-urlencoded 是一种常见的 MIME 类型,用于提交 HTML 表单数据。数据以键值对的形式编码,键和值都经过 URL 编码,并以 & 分隔。

1. 使用场景

  • 提交 表单数据
  • 兼容性好,后端容易解析

2.使用方法

js 复制代码
// 使用 URLSearchParams 构建数据
const params = new URLSearchParams();
params.append('username', 'zhangsan');
params.append('password', '123456');

axios.post('/api/login', params)
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

3.后端接收

java 复制代码
@PostMapping("/api/login")
public ResponseEntity<?> login(
    @RequestParam("username") String username,
    @RequestParam("password") String password) {
    // 处理逻辑
}

五、multipart/form-data

multipart/form-data 是一种 MIME 类型,允许在一个 HTTP 请求中包含多部分数据,每部分可以是不同的类型。常用于文件上传。

1.使用场景

  • 文件上传

  • 需要传递二进制数据,如图像、文档等

2.使用方法

js 复制代码
const formData = new FormData();
formData.append('name', '张三');
formData.append('avatar', fileInput.files[0]); // 假设有一个文件输入框

axios.post('/api/upload', formData)
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

3.后端接收

java 复制代码
@PostMapping("/api/upload")
public ResponseEntity<?> uploadFile(
    @RequestParam("name") String name,
    @RequestPart("avatar") MultipartFile file) {
    // 处理逻辑
}
相关推荐
李慕婉学姐4 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
じ☆冷颜〃4 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
风送雨5 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
芯盾时代5 小时前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
线束线缆组件品替网5 小时前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程
奋进的芋圆6 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin6 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model20056 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉6 小时前
JavaBean相关补充
java·开发语言
以太浮标6 小时前
华为eNSP模拟器综合实验之-BFD联动配置解析
运维·网络·华为·信息与通信