Nuxt封装@nuxtjs/axios请求后端数据

2022-05-05 20:13:07 浏览数 (1)

代码语言:javascript复制
npm install @nuxtjs/axios -s

plugins新建axios文件配置公共请求

代码语言:javascript复制
export default ({ app: { $axios, redirect } }, inject) => {
  $axios.defaults.baseURL = 'http://api.com'
  $axios.setHeader('Content-Type', 'application/x-www-form-urlencoded')
  $axios.defaults.timeout = 10000;
  $axios.onRequest(req => { })
  $axios.onResponse(res => {
    if (res.data.code == 2000) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(res)
    }
  })
  $axios.onError(err => {
    return Promise.reject(err)
  })
  
  // 向nuxt注入一个内置的方法
  inject('axiosApi', (url, params, method) => {
    return new Promise((resolve, reject) => {
      $axios({
        method: method || "POST",
        url: url,
        data: params
      }).then(res => {
        resolve(res)
      }).catch(err => {
        reject(err)
      });
    })
  })
}

asyncData打印上下文,可以发现我们方法注入进去了

代码语言:javascript复制
asyncData(ctx){
	ctx.$axiosApi(...)
}
// 在methids里面写
this.$axiosApi(...)

asyncData方法

asyncData 方法会在组件每次加载之前被调用 asyncData 可以在服务端或路由更新之前被调用 asyncData 返回的数据融合到组件的data方法 asyncData 方式是在组件初始化前被调用,方法内饰无法通过this来引用组件的实例对象

查看源代码可以查看请求到的数据

0 人点赞