从vue-resource切换到axios

时间:2017-01-26 17:58:01

标签: javascript vue.js axios vue-resource

使用vue-resource,我们可以在main.js中设置根网址,如下所示:

Vue.http.options.root = 'http://localhost:3000/api'

我尝试将其替换为:

axios.defaults.baseURL = 'http://localhost:3000/api';
Vue.prototype.$http = axios

但是,现在我的帖子调用无法按预期工作,Vue.http.post会引发错误。

这是如何实现的?

2 个答案:

答案 0 :(得分:6)

使用axios,可以创建另一个实例having a custom config

var my_axios = axios.create({
  baseURL: 'http://localhost:3000/api',
});

从此处可以使用my_axios进行操作。您可以将自定义axios实例原型化为Vue:

Vue.prototype.$http = my_axios

答案 1 :(得分:1)

import axios from 'axios';

export const HTTP = axios.create({
  baseURL: `http://localhost:3000/api/`,
  headers: {
    Authorization: 'Bearer {token}'
  }
})

您现在可以像这样使用HTTP

<script>
import {HTTP} from './http-common';

export default {
  data: () => ({
    posts: [],
    errors: []
  }),

  created() {
    HTTP.get(`posts`)
    .then(response => {
      this.posts = response.data
    })
    .catch(e => {
      this.errors.push(e)
    })
  }
}
</script>