Как прикрепить axios / axios interceptor к Nuxt глобально? - PullRequest
0 голосов
/ 27 мая 2018

Как мне присоединить перехватчик axios / axios глобально к nuxt (так, чтобы он был доступен везде), так же, как и i18n?

Идея состоит в том, что я хотел бы иметь глобальный перехватчик axios, который каждыйодин запрос проходит через этот перехватчик.

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

вы можете создать плагин под названием axios (/plugins/axios.js)

import Vue from 'vue';
import axios from 'axios';

axios.interceptors.request.use((config) => {
  // Do something before request is sent
  return config;
}, function (error) {
  // Do something with request error
  return Promise.reject(error);
});

Vue.use(axios);

, а затем определить его в nuxt.config.js

module.exports = {
    //....

    plugins: [
      '~/plugins/axios',
    ],

    //....
};

, вот и все, ваш перехватчиксейчас работает глобально

0 голосов
/ 27 мая 2018

Создайте новый модуль, назовите его, например, request.js.

import axios from 'axios'
const instance = axios.create({
  baseURL: 'http://example.org' // if you have one
})

// Put all interceptors on this instance
instance.interceptors.response.use(r => r)

export default instance

Затем просто импортируйте этот экземпляр всякий раз, когда вам это нужно, и используйте его, как будто это обычный экземпляр axios:

import request from './request'

await request.get('/endpoint')
// or use promises
request.get('/endpoint').then(data => data)

Если вам действительно это нужно в глобальном масштабе, вы можете использовать следующий код в точке входа приложения:

import request from './request'
global.request = request
// use it:
await request.get('example.org')

Или вы можете добавить его в прототип vue

Vue.prototype.$request = request
// in your component:
this.$request.get()

Я бы посоветовал против этого все же.

...