我想调用另一个域提供的api,请遵循官方文档,这是nuxt.config.js
的一部分:
modules: ['@nuxtjs/axios'],
axios: {
proxy: true,
baseURL: 'http://localhost:8000/api',
// prefix: '/api', // it not work
credentials: true,
},
proxy: {
'/api/douban': {
target: 'https://api.douban.com',
changeOrigin: true,
pathRewrite: { '^/api': '' },
},
},
这是调用api的代码:
async search({ commit, state }, data) {
const res = await this.$axios.$get('/douban/book/search', { params: data });
commit('SET_BOOK_QUERY', res);
return res;
},
但它不起作用,因此我在http-proxy-middleware
中添加了一些日志,如下所示:
function shouldProxy (context, req) {
var path = (req.originalUrl || req.url)
console.log('shouldProxy path:', context, path);// output:shouldProxy path: /api/douban /admin/read
return contextMatcher.match(context, path, req)
}
似乎配置正确初始化,问题仅在于刷新页面,执行服务器渲染和日志输出时,但浏览器中的请求未触发检查。 有帮助吗?
更新:我忘记了如何解决它,但现在可以在此配置下使用:
this.$axios.$get(
`/api/proxy/lylares/netmusic/?query=music&id=${id}&limit=2&offset=0`,
{ params: { id, limit, offset } },
)
配置:
axios: {
proxy: true,
prefix: '/api', // it only work when proxy is enabled
credentials: true,
},
proxy: {
// '/api/proxy/lylares': {
// target: 'https://api.berryapi.net',
// changeOrigin: true,
// pathRewrite: { '^/api/proxy/lylares': '' },
// },
'/api': {
target: IS_DEV || process.server ? 'http://localhost:8000' : 'https://my.space',
changeOrigin: true,
},
},