如何使用Axios禁用参数字符串中转义的特殊字符

时间:2019-05-23 06:12:47

标签: javascript vue.js axios

我正在尝试设置定界符,在这种情况下为:\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禁用查询字符串中的转义特殊字符?

任何帮助将不胜感激。

2 个答案:

答案 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'
  }
});