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
  • 相关阅读:
    WHU-1551-Pairs(莫队算法+分块实现)
    JS日历控件 灵活设置: 精确的时分秒.
    java集群优化——多线程下的单例模式
    课程设计——银行系统
    互联网金融,巨头天下还是创业者天堂?
    Android 使用图片异步载入框架Universal Image Loader的问题
    程序C++ to C#交互
    浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自己主动弹出搜索提示
    全栈JavaScript之路(十六)HTML5 HTMLDocument 类型的变化
    推荐安卓开发神器(里面有各种UI特效和实例)
  • 原文地址:https://www.cnblogs.com/mailyuan/p/10899205.html
Copyright © 2011-2022 走看看