axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题

项目开发过程中遇到一个接口传参,参数带特殊字符,axios调接口特殊字符丢失的问题

例如接口:

get/user/detail/{name}

name是个参数直接调接口的时候拼到接口上,get/user/detail/test123#$%,调接口发现后面的特殊字符#$%丢失了,调的接口变成了get/user/detail/test123

2、解决办法:

参数使用encodeURIComponent编译一下,再拼到接口上,这样特殊字符不会丢失,后端可以正常接收参数。

import Axios from 'src/axios/index.js';const name = 'test123#$%';// 直接拼接口上
Axios.get(`get/user/detail/${name}`).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});// 参数使用encodeURIComponent编译一下,再拼接口上
Axios.get(`get/user/detail/${encodeURIComponent(name)}`).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});

// 直接拼接口上

// 参数使用encodeURIComponent编译一下,再拼接口上

3、延伸

使用params传参,如果直接将参数使用?拼接到后面,也是会存在特殊字符丢失的问题

import Axios from 'src/axios/index.js';
const name = 'test123#$%';// 直接拼接口上
Axios({url: `get/user/detail?name=${name}`,method: 'get',
}).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});// 参数使用encodeURIComponent编译一下,再拼接口上
Axios({url: `get/user/detail?name=${encodeURIComponent(name)}`,method: 'get',
}).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});// 正常逻辑传参数,推荐
Axios({url: 'get/user/detail',method: 'get',params: { name },
}).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});

// 直接拼接口上

// 参数使用encodeURIComponent编译一下,再拼接口上

// 正常逻辑传参数,推荐

4、encodeURI 和 encodeURIComponent

MDN上关于encodeURI 和 encodeURIComponent的介绍

encodeURI() - JavaScript | MDN

encodeURIComponent() - JavaScript | MDN

encodeURIComponent不转义的字符包括:

类型包含
非转义的字符字母 数字 - _ . ! ~ * ' ( )

encodeURI不转义的字符包括:

类型包含
保留字符; , / ? : @ & = + $
非转义的字符字母 数字 - _ . ! ~ * ' ( )
数字符号#

5、解码

encodeURI使用decodeURI解码,encodeURIComponent使用decodeURIComponent 解码
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络中的通信子网:架构、协议与技术简介

在计算机网络中,通信子网是负责实现主机之间以及主机与终端之间数据传输的核心部分。它由一系列硬件设备和通信协议组成,为上层应用提供可靠、高效和透明的数据传输服务。本文将详细介绍通信子网的架构、协议与技术。 一、通信子网的架构 星型拓扑 星…

华为配置Smart Link负载分担示例

Smart Link基本概念 Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等…

Matlab 点云曲线探测(算法不稳定,仅用于学习)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的曲线探测的方法,不过我没有复现出论文中那样的效果,可能是理解有误,但这个算法仍然是很有意思,故这里也对其进行记录。 按照论文中的思路,首先我们需要通过一种线性强度图来计算确定每个点的法…

js事件流模型

js 事件流模型js 事件循环 js 事件流模型 JavaScript的事件流模型可以被概括为三个阶段:捕获阶段,目标阶段和冒泡阶段。这个模型是在DOM(文档对象模型)中定义的,用于描述事件如何在DOM元素中传播。 捕获阶段&#xf…

C语言实现水仙花

水仙花定义:指一个3位数,其各位数字立方和等于改数本身。若:153 1* 1* 1 5 * 5* 53* 3* 3 依次类推,四 、五 … 十全十美呀。 解题思路 从这句:其各位数字立方和等于改数本身 我们将这位数拆分出来: num num1 ^3 n…

提高图片分辨率的方法与实践

引言 在图像处理和计算机视觉领域,提高图片分辨率是一个常见的问题。随着高分辨率显示设备的普及,如4K、8K电视以及高像素手机摄像头的应用,用户对高质量图片的需求也越来越高。本文将介绍使用Golang语言提高图片分辨率的方法与实践。 1. 图…

服务器如何修改密码

首先先远程登录服务器。 1、右键我的电脑,点击“管理”。 2、在“本地用户和组”中打开“用户”,在右侧找到 Administrator 账户。 3、在 Administrator 账户上点击右键,选择“修改密码”设置您的新密码。 4、修改后请牢记您的系统管理员密…

Java网络编程,使用UDP实现TCP(一), 基本实现三次握手

简介: 首先我们需要知道TCP传输和UDP传输的区别,UDP相当于只管发送不管对方是否接收到了,而TCP相当于打电话,需要进行3次握手,4次挥手,所以我们就需要在应用层上做一些功能添加,如:…

Bounding boxes augmentation for object detection

Different annotations formats Bounding boxes are rectangles that mark objects on an image. There are multiple formats of bounding boxes annotations. Each format uses its specific representation of bouning boxes coordinates 每种格式都使用其特定的边界框坐标…

案例060:基于微信小程序考试系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

01-SDV软件定义汽车思考

前言: 随着汽车产业“新四化”(电动化、网联化、智能化、共享化)的加速推动,智能汽车已成为各国科技发展战略重点,在社会数字化转型的浪潮下逐渐形成跨领域协作、多技术融合的汽车产业新赛道。 软件定义汽车已成为行业趋势与共识&#xff…

gcc安全特性之FORTIFY_SOURCE

GCC 4.0引入了FORTIFY_SOURCE特性,旨在加强程序的安全性,特别是对于字符串和内存操作函数的使用。下面是对FORTIFY_SOURCE机制的深入分析: 1. 功能 FORTIFY_SOURCE旨在检测和防止缓冲区溢出,格式化字符串漏洞以及其他与内存操作…

Django回顾的第三天

1.视图层 响应——本质都是HttpResponse——字符串 render——放个模板——模板渲染是在后端完成 js代码是在客户端浏览器里执行的 模板语法是在后端执行的 redirect——重定向 字符串参数不是是空的 状态码是 3开头 JsonResponse——json格式数据 return JsonRespons…

被淘汰的服务器如何回收利用_Maizyun

被淘汰的服务器如何回收利用 随着技术的不断进步,服务器作为IT基础设施的核心组件,其生命周期也在不断缩短。当服务器达到一定的使用年限或者技术更新换代时,便会被淘汰。如何有效地回收利用这些被淘汰的服务器,减少资源浪费&…

【开题报告】基于SpringBoot的抑郁症科普平台的设计与实现

1.研究背景 抑郁症是一种常见的精神障碍,严重影响了患者的生活质量和社会功能。随着社会的快速发展和生活压力的增加,抑郁症的发病率逐渐上升,成为全球范围内的健康问题。然而,对抑郁症的认知和理解仍存在许多误解和偏见&#xf…

class037 二叉树高频题目-下-不含树型dp【算法】

class037 二叉树高频题目-下-不含树型dp【算法】 code1 236. 二叉树的最近公共祖先 // 普通二叉树上寻找两个节点的最近公共祖先 // 测试链接 : https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/ package class037;// 普通二叉树上寻找两个节点的最近…

OSU(Optical Service Unit,光业务单元)的应用

文章目录 PeOTN与OSU融合升级中国联通研究院、广东联通携手华为完成OSU入多云重庆联通携手中兴通讯完成算力网络OSU现网试商用 PeOTN与OSU融合升级 《中国联通2023-2025本地承载网网络规划思路》指出:以“十四五”网络规划为指引,坚持业务需求导向&…

HashMap系列-resize

1.resize public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {final Node<K,V>[] resize() {Node<K,V>[] oldTab table;int oldCap (oldTab null) ? 0 : oldTab.length; //老的数组容量in…

RabbitMQ学习二

RabbitMQ学习二 发送者的可靠性生产者连接重试机制生产者确认机制开启生产者确认定义ReturnCallback定义confirmCallback MQ的可靠性交换机和队列持久化消息持久化LazyQueue控制台配置Lazy模式代码配置Lazy模式 消费者的可靠性失败重试机制失败处理策略业务幂等性唯一消息ID业务…

AI人工智能在电子商务领域的运用

电子商务领域和个性化新时代的 AI 随着整个社会追求便利性&#xff0c;并且逐渐从传统的实体零售模式转向网购模式&#xff0c;在线零售商必须改变与客户的互动方式。为每个客户提供个性化购物体验的理念一直都存在&#xff0c;但是现在我们正式进入了个性化新时代。这是一个包…