Axios--基礎知識

下載使用方式:

npm: $ npm install axios
cdn: <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

案例(GET以及POST請求):

GET請求:

// 爲給定 ID 的 user 創建請求
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

// 上面的請求也可以這樣做
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });




POST請求:

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });



多個併發請求:

function getUserAccount() {
  return axios.get('/user/12345');
}

function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // 兩個請求現在都執行完成
  }));

Axios API:

    axios(config);

    axios(url[, config])

    併發處理:axios.all() ; axios.spread()

Axios創建實例

const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

Axios配置默認值方式以及優先級

     1>.全局的 axios 默認值

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

     2>.自定義實例默認值

// Set config defaults when creating the instance
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// Alter defaults after instance has been created
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

     3>.配置會以一個優先順序進行合併。這個順序是:在 lib/defaults.js 找到的庫的默認值,然後是實例的 defaults 屬性,最後 是請求的 config 參數。後者將優先於前者。這裏是一個例子:

// 此時超時配置的默認值是 `0`
var instance = axios.create();

// 覆寫庫的超時默認值
// 現在,在超時前,所有請求都會等待 2.5 秒
instance.defaults.timeout = 2500;

// 爲已知需要花費很長時間的請求覆寫超時設置
instance.get('/longRequest', {
  timeout: 5000
});

攔截器

請求和響應攔截器

// 添加請求攔截器
axios.interceptors.request.use(function (config) {
    // 在發送請求之前做些什麼
    return config;
  }, function (error) {
    // 對請求錯誤做些什麼
    return Promise.reject(error);
  });

// 添加響應攔截器
axios.interceptors.response.use(function (response) {
    // 對響應數據做點什麼
    return response;
  }, function (error) {
    // 對響應錯誤做點什麼
    return Promise.reject(error);
  });

    攔截器的移除和實例添加

如果你想在稍後移除攔截器,可以這樣:
const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);


可以爲自定義 axios 實例添加攔截器
const instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});

取消請求

    使用 cancel token 取消請求

1.可以使用 CancelToken.source 工廠方法創建 cancel token,像這樣:
const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function(thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
     // 處理錯誤
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// 取消請求(message 參數是可選的)
source.cancel('Operation canceled by the user.');



2.還可以通過傳遞一個 executor 函數到 CancelToken 的構造函數來創建 cancel token:
const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // executor 函數接收一個 cancel 函數作爲參數
    cancel = c;
  })
});

// cancel the request
cancel();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章