为了账号安全,请及时绑定邮箱和手机立即绑定

谁有 Http.js 的源码 可以发一下吗

谁有 Http.js  的源码  可以发一下吗

正在回答

2 回答

import axios from 'axios'

import service from './contactApi'

import { Toast } from 'vant'


// 1.service 循环遍历出不同的请求方法

let instance = axios.create({

  // 注意地址的拼写

  baseURL: 'http://localhost:9000/api',

  timeout: 1000

})


let Http = {}; //包裹请求方法的容器



// 2.请求格式或者参数的统一

for (let key in service) {

  let api = service[key]; // url method

  console.log(api)

  console.log(key)

  // async的作用:避免进入回调地狱

  Http[key] = async function (

    params,   // 请求参数 get(url),put,post,,patch(data),delete(url)

    isFormdata = false, // 判断是否是form-data请求

    config = {} //配置参数

  ) {

    // let url = api.url

    let newParams = {}

    // 3.content-type是否是form-data的判断

    if (params && isFormdata) {

      newParams = new FormData();

      for (let i in params) {

        // 转换form-data的格式

        newParams.append(i, params[i]);

      }

    } else {

      newParams = params;

    }

    // 4.不同的请求判断

    let response = {}; //请求的返回值

    if (api.method === 'put' || api.method === 'post' || api.method === 'patch') {

      try {

        response = await instance[api.method](api.url, newParams, config);

      } catch (err) {

        response = err;

      }

    } else if (api.method === 'delete' || api.method === 'get') {

      try {

        config.params = newParams;

        response = await instance[api.method](api.url, config);

      } catch (err) {

        response = err;

      }

    }

    return response;   // 返回响应值

  }


}




// 拦截器的添加


// 5.请求拦截器

instance.interceptors.request.use(

  // 发起请求前

  config => {

    Toast.loading({

      mask: true, //是否显示阴影

      duration: 0, // 0是一直存在阴影,默认的是1000ms

      forbidClick: true, //禁止点击

      message: '加载中...'

    })

    return config

  },

  // 请求失败

  () => {

    Toast.clear()

    Toast('请求错误,请稍后重试')

  }  

)


// 6.响应拦截器

instance.interceptors.response.use(

  // 请求成功

  res => {

    Toast.clear()

    return res.data

  },

  () => {

    Toast.clear()

    Toast('请求错误,请稍后重试')

  }

)


export default Http


2 回复 有任何疑惑可以回复我~
import axios from 'axios'import service from './contactApi'import { Toast } from 'vant'// 1.service 循环遍历出不同的请求方法let instance = axios.create({  // 注意地址的拼写  baseURL: 'http://localhost:9000/api',  timeout: 1000})let Http = {}; //包裹请求方法的容器// 2.请求格式或者参数的统一for (let key in service) {  let api = service[key]; // url method  console.log(api)  console.log(key)  // async的作用:避免进入回调地狱  Http[key] = async function (    params,   // 请求参数 get(url),put,post,,patch(data),delete(url)    isFormdata = false, // 判断是否是form-data请求    config = {} //配置参数  ) {    // let url = api.url    let newParams = {}    // 3.content-type是否是form-data的判断    if (params && isFormdata) {      newParams = new FormData();      for (let i in params) {        // 转换form-data的格式        newParams.append(i, params[i]);      }    } else {      newParams = params;    }    // 4.不同的请求判断    let response = {}; //请求的返回值    if (api.method === 'put' || api.method === 'post' || api.method === 'patch') {      try {        response = await instance[api.method](api.url, newParams, config);      } catch (err) {        response = err;      }    } else if (api.method === 'delete' || api.method === 'get') {      try {        config.params = newParams;        response = await instance[api.method](api.url, config);      } catch (err) {        response = err;      }    }    return response;   // 返回响应值  }}// 拦截器的添加// 5.请求拦截器instance.interceptors.request.use(  // 发起请求前  config => {    Toast.loading({      mask: true, //是否显示阴影      duration: 0, // 0是一直存在阴影,默认的是1000ms      forbidClick: true, //禁止点击      message: '加载中...'    })    return config  },  // 请求失败  () => {    Toast.clear()    Toast('请求错误,请稍后重试')  }  )// 6.响应拦截器instance.interceptors.response.use(  // 请求成功  res => {    Toast.clear()    return res.data  },  () => {    Toast.clear()    Toast('请求错误,请稍后重试')  })export default Http


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

谁有 Http.js 的源码 可以发一下吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信