事情的起因是这样的,本来联调的很愉快。接口突然报了个400。
问题定位: [大小] 哈哈 ->这种英文字符+中文汉字的字符串转码后。[]并没有被转码。而中文浏览器会自动转码导致的。
问题解决:可以手动转两次码。将特殊字符也转码。但需要后端去手动解码,比较麻烦。所以我在封了一个公共方法。手动对特殊字符转码。
export const encodeURIComponentUrlParam = (url: string) => {
return encodeURIComponent(url).
replace(/\@/g, '%40').
replace(/\:/g, '%3A').
replace(/\$/g, '%24').
replace(/\,/g, '%2C').
replace(/\+/g, '%20').
replace(/\[/g, '%5B').
replace(/\]/g, '%5D').
replace(/\(/g, '%28').
replace(/\)/g, '%29').
replace(/\s/g, '%20');
}