欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中封裝axios來(lái)管控api的2種方式

 更新時(shí)間:2019年09月11日 09:57:18   作者:星星0828  
這篇文章主要介紹了封裝axios來(lái)管控api的2種方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言:我們?cè)陂_(kāi)發(fā)項(xiàng)目的時(shí)候,往往要處理大量的接口.并且在測(cè)試環(huán)境 開(kāi)發(fā)環(huán)境 生產(chǎn)環(huán)境使用的接口baseurl都不一樣 這時(shí)候如果在開(kāi)發(fā)環(huán)境完成之后切換每一個(gè)接口的baseurl會(huì)變的非常的麻煩,(要去每一個(gè)發(fā)出請(qǐng)求的頁(yè)面都要去修改地址)

所以為了更好的管控這些api,我們需要自己封裝一個(gè)axios定義統(tǒng)一的接口baseurl 這樣在環(huán)境的切換的時(shí)候更好的管控和修改.話不多說(shuō)上代碼!!!

 自己創(chuàng)建一個(gè)api文件夾 即可

import axios from 'axios'
  為了處理java字符串問(wèn)題
import qs from 'qs' 
創(chuàng)建一個(gè)axios實(shí)例 在其中設(shè)置超時(shí)時(shí)間和響應(yīng)頭
const http = axios.create({
  baseURL: process.env.VUE_APP_MOCK_DATA_URL, // api 的 base_url
  timeout: 3000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
})
/**
* 請(qǐng)求攔截 可以在發(fā)送請(qǐng)求的時(shí)候加上判斷信息
*/
http.interceptors.request.use(config => {
 *****
  return config
}, error => {
  return Promise.reject(error)
})
/**
* 響應(yīng)攔截 可以對(duì)傳回的數(shù)據(jù)做出判斷 
*/
http.interceptors.response.use(response => {
  return response
}, error => {
  return Promise.reject(error)
})

將這個(gè)封裝好的axios 暴露出去

export default http

在main.js中引入并且掛載到原型對(duì)象上

  import http from '@/api/api.js'
 Vue.prototype.$http = http

第一種封裝的方式一般就是對(duì)于api數(shù)量不是特別多的時(shí)候 復(fù)雜層級(jí)不高的情況 這樣封裝完全可以

第二種方式

'use strict'

同樣的也需要引入這兩個(gè)包

import axios from 'axios'
import qs from 'qs'

// 設(shè)置攔截器 默認(rèn)請(qǐng)求url得前綴
// axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? '/custInfo' :
//  '127.0.0.1:8888', 
//  axios.interceptors.request.use(config => {
//   // // loading
//   return config
//  }, error => {
//   return Promise.reject(error)
//  })
// 
// axios.interceptors.response.use(response => {
//  return response
// }, error => {
//  return Promise.resolve(error.response)
// })

export default {
 post(url, data) {
  return new Promise((resolve, reject) => {
   axios({
    method: 'post',
    url,
    // qs這個(gè)插件主要是為了解決java后臺(tái)接受到得參數(shù)必須是字符串
    data: qs.stringify(data),
    headers: {
     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
   }).then((res) => {
    resolve(res)
   }).catch((error) => {
    reject(error)
   })
  })
 },
 get (url, params) {
  return new Promise((resolve, reject) => {
   axios({
    method: 'get',
    url,
    params, // get 請(qǐng)求時(shí)帶的參數(shù)
   }).then((res) => {
    resolve(res)
   }).catch((error) => {
    reject(error)
   })
  })
 }
}

  這種封裝好之后,就可以在創(chuàng)建一個(gè)文件夾  然后把所有的接口都寫在一起

  getCustValue(params) {
    return $http.post('/custOverview/getCustValue', params);
  },
  getTacntrt(params) {
    return $http.get('/dict/getTacntrtMgmtMsgMonth', params);
  },
  query(params) {
    return $http.post('/indexManager/queryVipFlowCount', params);
  }

  然后一一列舉 就可以非常好的梳理api 

總結(jié)

以上所述是小編給大家介紹的JS中封裝axios來(lái)管控api的2種方式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論