我正在尝试设置定界符,在这种情况下为:\n
不幸的是,通过使用axios发布数据,它包含特殊字符,这些特殊字符在到达API时会在params字符串中转义。
它变成了:\\n
//# src/stores/chat_configurations.js
const actions = {
async updateDelimeter ( commit, delimeter) {
console.log(delimeter)
// ":\n"
await axios.put(`/api/chat_configuration`, delimeter: delimeter)
}
}
在发送请求之前,它仍然没有改变。":\n"
// # src/lib/api.js
// Add a request interceptor
axios.interceptors.request.use(function (config) {
console.log(config)
// {"delimeter": ":\\n"}"
return config
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
一旦在拦截器中查询字符串就会转义。":\\n"
是否可以使用axios禁用查询字符串中的转义特殊字符?
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用encodeURIComponent
对其进行编码,并且应该有一种在服务器端对其进行解码的方法。在ASP.NET中,您可以使用HttpUtility.UrlDecode
来做到这一点。
答案 1 :(得分:0)
我不太了解vue.js,但尝试解释一下:
paramsSerializer可以在实例级别设置:
var instance = axios.create({ paramsSerializer: function(params) { /* ... */ } })
或在全局级别:
axios.defaults.paramsSerializer = function(params) { /* ... */ };
另一种选择是将api键直接添加到URL:
axios.get('https://foobar.com/api?api_key=' + key);
您可以使用“ params”配置选项添加其他参数:
axios.get('https://foobar.com/api?api_key=' + key, {
params: {
foo: 'bar'
}
});