讲师中心 微信公众号
AI工具推荐 视频效率加速

Vue Axios 网络请求怎么处理请求参数的序列化与特殊字符转义

胖辰酱_9936

胖辰酱_9936

发布时间:2026-08-05 09:15:49

|

223人浏览过

|

来源于php中文网

原创

Vue中Axios请求参数序列化需按请求类型和Content-Type区分:GET用params自动编码,复杂结构需qs;POST/PUT中JSON数据自动序列化,表单数据需qs或URLSearchParams,FormData自动处理;手动编码仅在自定义场景用encodeURIComponent。

vue axios 网络请求怎么处理请求参数的序列化与特殊字符转义

Vue 项目中用 Axios 发送请求时,参数怎么序列化、特殊字符(比如空格、中文、斜杠、& 等)怎么正确转义,直接关系到后端能否完整、准确地收到数据。核心在于区分请求类型(GET/POST/PUT/DELETE)和数据格式(URL 查询参数、表单提交、JSON 提交),并匹配对应的 Content-Type 和序列化方式。

GET 请求:params 自动序列化,但嵌套/数组需注意

GET 的参数走 URL 查询字符串,Axios 默认使用 params 配置项,并内置了基础的 URL 编码(类似 encodeURIComponent)。对普通对象有效:

  • axios.get('/user', { params: { name: '张三', city: '北京 上海' } }) → URL 变成 /user?name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC+%E4%B8%8A%E6%B5%B7,空格和中文都已编码
  • 但默认不支持深度嵌套或数组展开(如 { filter: { status: [1,2], tags: ['a','b'] } }),会生成 ?filter=[object Object] 这种无效结果
  • 需要复杂结构时,可引入 qs 库:npm install qs,然后全局配置:axios.defaults.paramsSerializer = params => qs.stringify(params, { arrayFormat: 'brackets' })

POST/PUT 请求:根据 Content-Type 决定序列化方式

不是所有 POST 都一样。后端接口约定哪种格式,前端就必须发哪种,不能只靠 data 字段“随便传”:

Vue Composition Analyzer
Vue Composition Analyzer

分析 Vue 3 Composition API 使用情况——审计响应式模式、可组合函数设计、ref 与 reactive 的选择、计算属性、watcher 使用及组件……

下载
  • 发 JSON 数据(最常用):Content-Type 是 application/json,data 直接传对象,Axios 自动调用 JSON.stringify(),无需手动处理转义 —— 中文、引号、反斜杠都会被 JSON 标准正确编码
  • 发表单数据(x-www-form-urlencoded):Content-Type 是 application/x-www-form-urlencoded,此时 data 必须是字符串(如 key1=val1&key2=val2)或 URLSearchParams 实例;若传对象,需手动序列化(如用 qs.stringify() 或自己遍历 + encodeURIComponent)
  • 发 FormData(文件上传):Content-Type 自动设为 multipart/form-data,data 用 new FormData(),append 字段,浏览器自动处理编码和边界,不用干预

手动控制转义:什么时候该自己写 encodeURIComponent?

一般不需要手写,除非你绕过 Axios 默认行为,比如拼接 URL 或构造原始字符串参数:

立即学习“前端免费学习笔记(深入)”;

  • 在 transformRequest 中自定义表单序列化时,必须对每个 key 和 value 单独 encodeURIComponent(),否则空格、中文、&、= 等会破坏 URL 结构
  • 拼接 GET URL 字符串(不推荐):axios.get(`/api/search?q=${encodeURIComponent(query)}`) —— 这种写法容易漏掉编码,不如交给 params
  • 注意:encodeURI() 和 encodeURIComponent() 不同,前者不编码 / ? : @ & = + $ , #,后者更严格,适合参数值编码

避免常见坑:Content-Type 与 data 类型必须匹配

很多乱码、参数收不到、400 错误,根源都是这组不一致:

  • 写了 { headers: { 'Content-Type': 'application/json' } },但 data 传的是字符串(如 '{"name":"test"}')—— Axios 会再套一层 JSON.stringify,变成 "{\"name\":\"test\"}",后端解析失败
  • 写了 application/x-www-form-urlencoded,但 data 传的是普通对象 —— Axios 默认当 JSON 处理,后端收不到键值对
  • 解决方案:要么删掉 headers 让 Axios 自动推断,要么确保 data 类型与 header 完全对应(JSON 对象 ↔ application/json;URLSearchParams 或字符串 ↔ x-www-form-urlencoded)

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2463

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5303

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6350

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5938

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

843

2024.05.22

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3363

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

854

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

6426

2024.03.12

PHP 表单提交后如何获取数据
PHP 表单提交后如何获取数据

PHP表单提交后如何获取数据专题汇集HTML表单提交、GET与POST接收、$_POST和$_GET读取、跨文件传值、单选与下拉字段获取,以及空值和接收失败排查等文章,帮助新手完成从提交到处理的完整流程。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn