进行urlencode编码
在进行接口测试的过程中,一部分接口的参数需要做urlencode编码,如果将传输的参数直接编码进行发送,就无法灵活的修改参数了,也不能灵活使用环境变量。于是想在postman的Pre-request Script中先用参数化的变量拼接报文,然后再进行urlencode编码。
一点尝试
一开始使用encodeURI()方法,发现编码出来的报文不对,百思不得其解,为什么在postman的地址框中进行urlencode就可以,但是在Pre-request Script中用这个方法给报文编码出来格式就不对呢?
两点尝试
改为使用encodeURIComponent()方法,发出的请求对了,这是为啥呢???
不停求索
百度一下,得知encodeURI()的不编码字符和encodeURIComponent()不同:
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
所以用encodeURI方法处理请求之后,:;=?等符号没有经过编码,导致请求失败。
总结
- 编码整个url然后使用这个url—>encodeURI()
- 编码url中的参数—>encodeURIComponent()