Axios配置默认GET参数

pdkcd3nj  于 2022-11-05  发布在  iOS
关注(0)|答案(3)|浏览(192)

我在我的VueJS应用程序中使用Axios,我想在我的请求中添加一个默认的GET参数。我通过URL ?api-key=secret发送我的API-KEY,我不想每次都指定这个参数。
我在文档中看到我们可以设置全局自定义默认值。这样我们就不必每次都指定头。但是我们可以为get param做同样的事情吗?

wxclj1h5

wxclj1h51#

我使用了两种最常用的建议方法,努力使其与axios示例一起工作:

// method 1: setting axios.defaults.params at the class level
axios.defaults.params = {}
axios.defaults.params['api-key'] = secret

// method 2: setting the `params` attribute at an instance level
const axClient = axios.create({
    baseURL: process.env.VUE_APP_BASE_URL,
    params: {
        api-key: process.env.VUE_APP_API_KEY
    }
});

然而,我设法让它很好地工作使用拦截器如下:

// create an instance with default properties
const axClient = axios.create({
    baseURL: process.env.VUE_APP_BASE_URL,
});

axClient.interceptors.request.use((config) => {
    // use config.params if it has been set
    config.params = config.params || {};
    // add any client instance specific params to config
    config.params['api-key'] = process.env.VUE_APP_API_KEY;
    return config;
});

这种方法的好处是,如果需要,示例级参数可以是动态的/按请求计算的。
作为一个(稍微有点做作的)示例,如果您需要向每个请求添加一个JWT(包括从您选择的存储方法中获取它的任何逻辑),甚至对围绕该请求的逻辑做出React。因此,在这个简单的示例中,如果用户在存储中没有JWT,请将他们重定向到登录页面,而不是发出请求。

um6iljoc

um6iljoc2#

这是:

axios.defaults.params = {}
axios.defaults.params['api-key'] = secret
pxq42qpu

pxq42qpu3#

如果你需要在每个axios请求之前调用一个函数,你应该使用一个拦截器。

相关问题