vue 封装请求

创建文件夹

在这里插入图片描述

http.js

import axios from 'axios';
// 设置请求超时时间和域名  创建axios实例
const instance = axios.create({
  baseURL: '127.0.0.1',
  timeout: 5000
})

//  http request 拦截器
instance.interceptors.request.use(
  config => {
    // console.log(config)
    // config.data = JSON.stringify(config.data)
    config.headers = {
      // 'Content-Type': 'application/x-www-form-urlencoded'
      'Content-Type': 'application/json'
    }
    return config
  }, err => {
    return Promise.reject(err)
  }
)

//  响应拦截器即异常处理
instance.interceptors.response.use(response => {
  return response
}, err => {
  if (err && err.response) {
    switch (err.response.status) {
      case 400:
        console.log('错误请求')
        break
      case 401:
        console.log('未授权,请重新登录')
        break
      case 403:
        console.log('拒绝访问')
        break
      case 404:
        console.log('请求错误,未找到该资源')
        break
      case 405:
        console.log('请求方法未允许')
        break
      case 408:
        console.log('请求超时')
        break
      case 500:
        console.log('服务器端出错')
        break
      case 501:
        console.log('网络未实现')
        break
      case 502:
        console.log('网络错误')
        break
      case 503:
        console.log('服务不可用')
        break
      case 504:
        console.log('网络超时')
        break
      case 505:
        console.log('http版本不支持该请求')
        break
      default:
        console.log(`连接错误${err.response.status}`)
    }
  } else {
    console.log('连接到服务器失败')
  }
  return Promise.resolve(err.response)
})

/**

* 封装get方法

* @param url

* @param data

* @returns {Promise}

*/

function get(url, params = {}) {
  return new Promise((resolve, reject) => {
    instance.get(url, {
      params: params
    })
      .then(response => {
        resolve(response.data)
      })
      .catch(err => {
        reject(err)
      })
  })

}

/**

* 封装post请求

* @param url

* @param data

* @returns {Promise}

*/

function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    instance.post(url, data)
      .then(response => {
        resolve(response.data)
      }, err => {
        reject(err)
      })
  })
}

/**

* 封装patch请求

* @param url

* @param data

* @returns {Promise}

*/

function patch(url, data = {}) {
  return new Promise((resolve, reject) => {
    instance.patch(url, data)
      .then(response => {
        resolve(response.data)
      }, err => {
        reject(err)
      })
  })

}

/**

* 封装put请求

* @param url

* @param data

* @returns {Promise}

*/

function put(url, data = {}) {
  return new Promise((resolve, reject) => {
    instance.put(url, data)
      .then(response => {
        resolve(response.data)
      }, err => {
        reject(err)
      })
  })
}
/**

* 封装delete请求

* @param url

* @param data

* @returns {Promise}

*/
 function del(url,params){
  return new Promise((resolve,reject)=>{
    instance.delete(url,params).then(response=>{  //这里传递的参数不做处理
             resolve(response.data);
       },err=>{
             reject(err);
       }).catch((error)=>{
             reject(error);
       })
  })
}

//  开放接口

export default {
  get: get,
  post: post,
  put: put,
  patch: patch,
  del:del
}

api.js

import login from './page/login'
import companies from './page/companies'

export const api = {
//登录模块
  login,
  //企业列表
  companies,
}

在创建一个文件夹 把api分模块管理

在这里插入图片描述

import http from '../http'

export  default {
    //登录请求
  login(data) {
    return http.post('/api-admin/login', data)
  },
}

main.js

import {api} from './axios/api'
Vue.prototype.$api = api;

.vue

在这里插入图片描述

delete特别注意
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值