zoukankan      html  css  js  c++  java
  • Axios跨域&封装接口

    Axios跨域请求问题处理:

    1、在config文件夹下的prod和dev的js文件下添加域名

    dev:
    module.exports = merge(prodEnv, {
      NODE_ENV: '"development"',
      API_HOST: '"/api"'
    });
    
    prod:
    module.exports = {
      NODE_ENV: '"production"',
      API_HOST: '" "'
    };

    2、在config文件夹下的index.js下对dev环境进行配置 

        proxyTable: {
          '/api': {
            target:'http://172.24.172.100:8080', // 设置你调用的接口域名和端口号
            changeOrigin: true, //跨域
            pathRewrite: {
              '^/api': 'http://172.24.172.100:8080' 
            }
          }
        },

    Axios封装接口:

    1. 在js里新建一个ajax.js,封装axios

    import axios from "axios"
    
    export default function (url, data={}, method="GET", headers) {
      return new Promise((resolve, reject) => {
        let promise = null;
        if(method==="GET"){
          promise = axios.get(url, {params: data, headers})
        }else if(method==="POST"){
          promise = axios.post(url, data, {headers})
        }
        promise
          .then(response=>resolve(response))
          .catch(err=>{
            // console.log("/src/axios/ajax.js----error: "+err)
            reject(err)
          })
      })
    }

    2.再新建一个index.js,用于存放封装的调用接口(每个接口分别暴露)

    import ajax from './ajax'  // 引入刚刚封装的axios
    
    export const preFixed = "/api";    // dev
    // export const preFixed = "";    // prod 产品上线环境
    
    /****************** 图片上传接口 ******************/
    export const requestImageUrl = (formData)=>{
      const url = preFixed+"/developer/uploadImage/getImageUrl";
      return ajax(url, formData, "POST")
    };
    // dev的时候preFixed为调用的端口号,prod时preFixed应为空

    3.再文件中单独引用

    // 因为刚刚创建的封装接口的文件为index.js,所以这里直接找到js会默认拿到js中的index.js 这是vue默认
     import {requestImageUrl} from '../../assets/js'
    
     async fileImg(e){
          let that = this;
          that.files=e.target.files[0];
          let formdata = new FormData();
          formdata.append("Image", e.target.files[0]);
          
        // 直接调用封装的方法,传入属性,解构即可
          const res = await requestImageUrl(formdata)
          console.log(res)
        },

    4.也可以在main里一起引用,在main.js中加入以下代码  (3.4任选其一即可)

    import ajax from './assets/js/ajax'
    Vue.prototype.ajax= ajax
  • 相关阅读:
    html标题-段落-字符实体-换行
    html概述和html基本结构:
    可以在一个.java文件中写两个类吗?
    栈内存和堆内存的区别
    Java的访问权限
    (转)第三方支付的盈利模式
    (转)第三方支付参与者
    直联和间联的区别——直连和间连的区别
    HashSet和LinkedHashSet特点.
    Map和TreeMap的特点
  • 原文地址:https://www.cnblogs.com/mailyuan/p/10899205.html
Copyright © 2011-2022 走看看