axios封装

axios封装这里使用vant来做提示,如果要换成别的直接改相应代码即可

request.js

/****   request.js   ****/
// 导入axios
import axios from 'axios'
import Vue from 'vue'
// 使用vant Notify做消息提醒
import { Notify,Toast } from 'vant';
//1. 创建新的axios实例,
const service = axios.create({
  //公共接口
  //baseURL: '',
  // 超时时间 单位是ms,这里设置了3s的超时时间
  timeout: 3 * 1000,
})
const CancelToken = axios.CancelToken
// 2.请求拦截器
service.interceptors.request.use(config => {
    //加载提示,可更改
    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });
  //发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
   config.data = JSON.stringify(config.data); 
   config.headers = {
     'Content-Type':'application/x-www-form-urlencoded' //配置请求头
   }
   //请求头携带token
   const token = localStorage.getItem('token')
   if(token){
      config.headers.token= token;
    }
  return config
}, error => {
  Promise.reject(error)
})

// 3.响应拦截器
service.interceptors.response.use(response => {//请求成功
  //取消加载状态
  Toast.clear();
  return response
}, error => {//请求失败
  console.log(error)
    //取消加载状态
    Toast.clear();
   /***** 接收到异常响应的处理开始 *****/
  if (error && error.response) {
    // 1.公共错误处理
    // 2.根据响应码具体处理
    switch (error.response.status) {
      case 400:
        error.message = '错误请求'
        break;
      case 401:
        error.message = '未授权,请重新登录'
        break;
      case 403:
        error.message = '拒绝访问'
        break;
      case 404:
        error.message = '请求错误,未找到该资源'
        //可在跳转404页面
        break;
      case 405:
        error.message = '请求方法未允许'
        break;
      case 408:
        error.message = '请求超时'
        break;
      case 500:
        error.message = '服务器端出错'
        break;
      case 501:
        error.message = '网络未实现'
        break;
      case 502:
        error.message = '网络错误'
        break;
      case 503:
        error.message = '服务不可用'
        break;
      case 504:
        error.message = '网络超时'
        break;
      case 505:
        error.message = 'http版本不支持该请求'
        break;
      default:
        error.message = `连接错误${error.response.status}`
    }
  } else {
    // 超时处理
    if (JSON.stringify(error).includes('timeout')) {
        //错误提示,可更改
        Notify('服务器响应超时,请刷新当前页')
    }
    error.message = '连接服务器失败'
  }
  //错误提示,可更改
  Notify(error.message)
  /***** 处理结束 *****/
  //如果不需要错误处理,以上的处理过程都可省略
  return Promise.reject(error.response)
})
//4.导入文件
export default service

http.js

/****   http.js   ****/
// 导入封装好的axios实例
import request from './request'

const http ={
    /**
     * methods: 请求
     * @param url 请求地址 
     * @param params 请求参数
     */
    get(url,params){
        const config = {
            method: 'get',
            url:url
        }
        if(params) config.params = params
        return request(config)
    },
    post(url,params){
        const config = {
            method: 'post',
            url:url
        }
        if(params) config.data = params
        return request(config)
    },
    put(url,params){
        const config = {
            method: 'put',
            url:url
        }
        if(params) config.params = params
        return request(config)
    },
    delete(url,params){
        const config = {
            method: 'delete',
            url:url
        }
        if(params) config.params = params
        return request(config)
    }
}
//导出
export default http

api.js

import http from './http'
// 
/**
 *  @parms url 请求地址 
 */
let url= "http://xxx.xxx.xxx.com"

// get请求
export function getList(params){
    return http.get(`${url}/xxx/xxx/xxx.ashx`,params)
}

// post请求
export function postList(params){
    return http.post(`${url}/xxx/xxx/xxx.ashx`,params)
}
// 获取验证码
export function postVerCode(params){
    return http.post(`${url}/xxx/xxx/xxx.ashx`,params)
}
// 注册
export function postRegister(params){
    return http.post(`${url}/xxx/xxx/xxx.ashx`,params)
}
// put 请求
export function putList(params){
    return http.put(`${url}/xxx/xxx/xxx.ashx`,params)
}
// delete 请求
export function delList(params){
    return http.delete(`${url}/xxx/xxx/xxx.ashx`,params)
}

调用请求

/**
 * 
 * @param {Function} postVerCode 获取验证码
 * @param {Function} postRegister 登录
 */
import {postVerCode} from '@/utils/axios/api'


postVerCode(data).then(res => {
   console.log(res)
   if(res.code==1){
       //逻辑代码
   }
}).catch(err => console.log(err))//失败

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值