全局配置和监听

全局配置

我们访问的后端url,一般有个共同的前缀,这个前缀如果分散写在程序各处,修改起来比较麻烦,设置一个全局的变量,每次都 prefx + 'url'也比较麻烦,vue-resource可以设置一个全局的前缀,每次调用时vue-resource自动加上这个前缀,一般我喜欢在main.js加入如下设置

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

有一点需要注意,要想这个http.options.root起作用,需要在http.request时的url没有/开始,例如 this.$http.get('/user')是不会使用options.root前缀的,但this.$http.get('user')则会使用这个前缀。

还可设置一些共同的头信息,每次ajax请求都传递的头信息:

Vue.http.headers.common['Accept'] = 'application/json'

监听器

可能有这种需求,大部分的ajax调用需要加一个统一的参数,例如token,有就传递,没有则不传递,如果分散的写在每个调用处,程序不优雅,即使写个公共函数,每处都调用此函数,也不够优雅。interceptor就是解决这种问题,让我们的程序看起来足够优雅。

在main.js里加入如下代码:

Vue.http.interceptors.push(function(request) {
  // 可以对request进行些处理,例如判断下是否已经登录
  // 如果已经登录则加上token
  Vue.http.headers.common['Authorization'] = 'Bearer ' + Vue.prototype.token
  Vue.http.headers.common['Content-Type'] = 'application/json;charset=UTF-8'


  // return response callback
  return function(response) {
    // 可以在这里判断下响应,例如401,则重定向到登录页
    // 500则出现一个统一的提示页等
    //response.body = '...';
    console.log('interceptors of response', response.status)
  };
});

results matching ""

    No results matching ""