J. *_*son 8 vue.js axios nuxt.js
我一直在努力让它工作两天。我是 Nuxt 的全新用户(尽管我已经使用 Vue 几年了),所以我只是想了解一下这一切是如何工作的。
在我的 Nuxt 项目中,我安装了 Axios 模块:
nuxt.config.js
export default {
plugins: [
...
'~/plugins/axios',
],
axios: {
baseURL: 'https://my-url.com/wp-json/wp-v2',
https: true,
},
}
Run Code Online (Sandbox Code Playgroud)
插件/axios.js
export default ({ $axios, env }) => {
$axios.onRequest(config => {
$axios.setToken(env.WP_API_KEY, 'Bearer');
});
}
Run Code Online (Sandbox Code Playgroud)
在我的页面中,我尝试使用该asyncData函数从我的 WordPress API 中提取数据,如下所示:
export default {
async asyncData(context) {
const data = await context.$axios.$get('/media');
console.log(data);
return { data };
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直收到 401 Not Authorized 错误,基本上说明我Authorization: Bearer <token>的未通过。但是,使用 Postman,我可以验证此端点确实有效并返回我需要的所有 JSON,因此问题必须出在我设置 axios 全局标头的方式上。
很难找到任何关于如何使用 Nuxt/Axios 模块设置全局标头的真实示例。我在文档中看到how to use setToken,但是它并没有确切地显示放置它的位置。
我有什么设置错误,我该如何解决?
J. *_*son 15
非常典型的是,我在发布问题 15 分钟后让它工作。
像这样设置标题似乎有效。我不确定为什么该setToken方法不起作用。
export default ({ $axios, env }) => {
$axios.onRequest(config => {
config.headers.common['Authorization'] = `Bearer ${env.WP_API_KEY}`;
});
}
Run Code Online (Sandbox Code Playgroud)