axios 封装数据请求

13 篇文章 0 订阅

数据请求封装(axios)

  1. 安装 axios npm i axios

  2. 创建request.js文件(这个文件是用来封装数据请求的)

  3. 数据请求代码(下面写了常用的get 和post请求)

    import axios from 'axios'
    
    axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    
    axios.create({
        // baseURL: 'https://some-domain.com/api/',
        timeout: 5000,
        // headers: {'X-Custom-Header': 'foobar'}
      });
      //上面都是默认配置
      // 第2步开始封装
      const request = ({
        // axios选项(axios选项去axios.js 官网上找 文档 请求配置 (找需要的))
        url,
        method = 'get',
        headers,
        params,
        data,
        withCredentials = false
      }) => {
        return new Promise((resolve,reject) => {
          //1. 这是数据处理
          switch (method.toLowerCase()){
            case 'post':
              axios({
                url,
                method,
                headers,
                params,
                data,
                withCredentials :false
              }).then( res => resolve(res))
              .then( err => reject(err))
              break;
            default:
              //get put delete
              axios({
                url,
                method,
                headers,
                params,
                withCredentials : false
              }).then( res => resolve(res))
                .then( err => reject(err))
              break;
          }
          //2. 拦截器(去axios.js官网上去找拦截器)
          // 添加请求拦截器
            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);
            });
      
              })
      }
      //导出
      export default request
    
  4. 使用
    1. 引入封装的代码import request from "../utils/request.js";
    2. 两种方法:第一种promise方法 ;第二种async/await;方法
      1. promise方法
        request({
        url:'/api/addOrder',
        method:'post',
        data:params//传递的参数
        }).then( ( res ) => {
        console.log("请求的数据",res)
        } )
        
      2. async/await;方法
        async methodDataRequest () {
        	let data = await request({
        	        url:'/api/addOrder',
        	        method:'post',
        	        data:params//传递的参数
        	    	})
        	  console.log("请求的数据",data)
        }
        
  5. 请求地址再次封装

    1. 创建一个api文件夹(用来存放请求地址)
    2. 在api文件夹下创建对应模块的js文件例如:hone.js 、login.js
    3. 在js文件中封装代码 (先要引入封装好的axios代码);
      import request from "../utils/request.js";//引入封装好的axios文件
      
      export const $addOrder = (params) => {
          return request({
              url:'/api/addOrder',
              method:'post',
              data:params
          })
      }
      export const $orderPPXL = (data) => {
          return request({
              url:'/api/order/PPXL',
              method:'get',
              params:data
          })
      }
      
    4. 注释:上面代码url地址中的api后面是后端地址;api 是我自己在vue.config.js中配置的代理(api就是后端接口的端口协议域名)

    5. vue.config.js 的代理 的代码
      module.exports = {
          configureWebpack: {
              devServer: {
                  proxy: {
                      //名字可以自定义,这里我用的是api
                      '/api': {
                        target: 'https://www.baidu.com',//设置你调用的接口域名和端口号 别忘了加http
                        changeOrigin: true,//这里设置是否跨域
                        pathRewrite: {
                          '^/api': ''
                        }
                      }
                  }
              }
          },
      }
      
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值