将参数/参数传递给axios拦截器

时间:2017-12-09 14:51:42

标签: javascript axios

如何将自定义参数发送到 axios 拦截器?我正在使用这样的拦截器:

window.axios.interceptors.request.use(function (config) {
    if (PASSED_PARAM == true) {
        doSomethingAwesome();
    }

    return config;
}, function (error) {    
    return Promise.reject(error);
});

我还有一个需要接收相同参数的响应拦截器。

5 个答案:

答案 0 :(得分:6)

合并参数

axios.interceptors.request.use((config) => {
  config.params = {...config.params, my_variable: 'value'}
  return config
})

答案 1 :(得分:4)

工作解决方案

在发送数据时,使用Axios拦截器向查询添加参数实际上相当简单。

axios.interceptors.request.use((config) => {
  config.params = {my_variable: 'value'}
  return config
})

答案 2 :(得分:1)

我最终使用了headers对象。不确定是推荐,还是反模式。但无论如何它都有效。我不完全确定标头添加到服务器请求头的字节数,但我认为它是可以忽略的。

答案 3 :(得分:1)

@Laurent建议的方法将导致axios清除所有其他参数,并用my_variable代替它,这可能并不是您想要的。

添加默认参数而不是替换的正确方法是这样的:

axios.defaults.params = {};
axios.interceptors.request.use(function (config) {
    config.params['blah-defaut-param'] = 'blah-blah-default-value';
    return config;
}, function (error) {
    return Promise.reject(error);
});

这适用于axios 0.18.1。由于存在回归错误,它无法与axios 0.19一起使用...,我相信它将很快得到修复。

答案 4 :(得分:0)

axios 允许传递一些额外的请求参数:

    $ bitbake core-image-minimal
Traceback (most recent call last):
  File "/home/thisUser/Downloads/poky/bitbake/lib/bb/pysh/pyshyacc.py", line 654, in <module>
    import pyshtables
ModuleNotFoundError: No module named 'pyshtables'

和拦截器:

axios.post('/api', `some body`,
    {headers: {'Content-Type': ' text/html;charset=UTF-8'},
    param: true});

我已经在版本:0.21.1 上测试过

相关问题