首页 > 其他分享 >vue 配置代理 及 axios 请求封装和使用

vue 配置代理 及 axios 请求封装和使用

时间:2024-09-18 13:50:54浏览次数:12  
标签:baidu axios 封装 请求 url vue method

一. 配置代理 -  vue.config.js

 
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  // 配置代理服务器
  devServer: {
    proxy: {
      '/baidu': {
        target: 'https://baidu.com',
        // ws: true,                            // 用于支持websocket
        changeOrigin: true,                  // 用于控制请求头中的host值
        pathRewrite: {
          '^/baidu': ''
        }
      },
      // 配置更多代理...
    }
  }
})

由上面代码可知 配置一个  /baidu 的代理 , 当匹配到 /baidu ,会跳转到目标target  https://baidu.com

二. 封装axios.js 

目录:  utils/axios.js

因为axios的baseUrl 配置 会影响vue.config.js中配置的代理,可能会使其失效。所以需要根据url 来对baseURL做处理。如果是代理路径,则baseURL设置为空

import axios from 'axios'  // 导入axios
 
 
/**
 * 当前路径是否为需要代理的路径
 * @param {*} url 
 * @returns 
 */
function currentUrlIsProxy(url) {
    const proxyArr = ['baidu','代理路径2','代理路径3'] // 需要代理的路径数组 - 即vue.config.js 中配置的代理路径集合
    const activeProxy = proxyArr.find(proxyItem => url.indexOf(proxyItem) !== -1)
    return activeProxy ? true : false
}
 
/**
 * axios请求
 * @param {*} method 
 * @param {*} url 
 * @param {*} params 
 * @param {*} headers 
 * @returns 
 */
export function apiAxios (method, url, params, headers) {
    var httpDefault = {
      baseURL: currentUrlIsProxy(url) ? '' : process.env.VUE_APP_BASE_URL,//基本地址
      method: method,//请求的方法
      url: url,//接口地址
      params: method === 'GET' || method === 'DELETE' ? params : null,//get请求和delete请求参数在url地址后面,不在请求体当中
      data: method === 'POST' || method === 'PUT' ? params : null,//put请求,post请求参数在请求体当中
      headers:headers?Object.assign({}, axios.defaults.headers,headers):axios.default.headers,//判断接口有没有定制的请求头,与基本的请求头进行合并
    }
    return new Promise((resolve, reject) => {
      axios(httpDefault)
        .then((res) => {
          resolve(res)
        }).catch((response) => {
          reject(response)
          // this.$message.error('请求失败!')
        })
    })
}

三.main.js 使封装的axios.js 可以全局使用

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { apiAxios } from './utils/axios' // 导入
 
Vue.config.productionTip = false
Vue.prototype.$http = apiAxios // 全局配置
 
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')


四.使用

使用组件的.vue

<template>
  <div>
 
  </div>
</template>
 
<script>
export default {
    data() {
        return {
 
        }
    },
    mounted() {
        this.$http('get','/login_register_index',{request_time: '1663311028554'}).then(() => {
            // 这里的baseUrl 为 https://market.idcsmart.com
            // 这里实际请求的是  https://market.idcsmart.com/login_register_index
        }).catch(error => {
            console.log(error)
        })
 
        this.$http('get','/baidu/login_register_index',{request_time: '1663311028554'}).then(() => {
            // 匹配到 代理路径 /baidu
            // 这里实际请求的是  https://www.baidu.com/login_register_index  说明代理配置成功!
        }).catch(error => {
            console.log(error)
        })
 
    }
}
</script>
 
<style>
 
</style>

标签:baidu,axios,封装,请求,url,vue,method
From: https://blog.csdn.net/hefeng_aspnet/article/details/142210168

相关文章

  • 99元阿里云服务器部署若依前后端分离版(ruoyi-vue)
    1.购买阿里云最近阿里云推出99元套餐,相当划算,薅羊毛搞起->新老同享阿里云99一年    系统选择centos2.安装JDK        JDK>=1.8虽说推荐1.8版本,但毕竟有点老,我选的JDK17,安装过程如下:#下载安装包wgethttps://download.oracle.com/java/17/archive/jdk-17.0.1......
  • 基于SpringBoot+vue的校园消费点评系统设计与实现
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.可行性分析7.系统测试7.1系统测试的目的7.2系统功能测试8.数据库表设计9.代码参考10.数据库脚本11.作者推荐项目12.为什么选择我?13.获取源......
  • 【开题报告】基于Springboot+vue基于微信小程序的手机点餐软件(程序+源码+论文) 计算机
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展和智能手机普及率的不断提高,人们的生活方式正经历着深刻的变革。餐饮行业作为传统服务业的重要组成部分,也迎来了数字化......
  • 【开题报告】基于Springboot+vue图书管理系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,传统图书管理方式已难以满足现代图书馆高效、便捷的管理需求。传统的图书管理依赖于人工记录与检索,不仅效率低下,而且容易出错,......
  • SpringBoot+Neo4j+Vue+Es集成ES全文检索、Neo4J知识图谱、Activiti工作流的知识库管理
    在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现数......
  • VUE框架CLI组件化组件绑定自定义事件时回调函数的this对象------VUE框架
    <template> <div> <!--内置函数的实现步骤--> <!--提供事件源,给事件源绑定事件,编写回调函数,将回调函数和事件进行绑定--> <!--等待事件的触发,事件触发执行回调函数--> <!--组件的自定义事件实现步骤--> <button@click="Hello()">你好</button> <!--给Us......
  • Vue自定义指令以及项目中封装过的自定义指令
     自定义指令Vue 自定义指令是Vue.js框架中一个非常强大的功能,它允许你注册一些全局或局部的自定义DOM操作指令,以便在模板中复用。自定义指令通过Vue.directive()方法进行全局注册,或者在组件的directives选项中局部注册。自定义指令的钩子函数Vue自定义指令可以包含几个......
  • 微信小程序wx.request请求封装
    config.js//请求地址constBASE_URL="https://localhost:8080"constTIMEOUT=10000export{BASE_URL,TIMEOUT}server.js假设这里返回的数据结构为{"code":0,"msg":"提示信息","data":"返回数据"}当cod......
  • 99元阿里云服务器部署若依前后端分离版(ruoyi-vue)
    1.购买阿里云最近阿里云推出99元套餐,相当划算,薅羊毛搞起->新老同享阿里云99一年    系统选择centos2.安装JDK        JDK>=1.8虽说推荐1.8版本,但毕竟有点老,我选的JDK17,安装过程如下:#下载安装包wgethttps://download.oracle.com/java/17/archive/jdk......
  • [附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
    今天带来一款优秀的项目:个人博客系统源码 。系统采用的流行的前后端分离结构,内含功能包括"写博客文章",“修改博客文章”,“富文本编辑器”,“评论管理”“管理员角色”,“游客角色”,“文章标签”,“文章分类”如果您有任何问题,也请联系小编,小编是经验丰富的程序员! 一.系统演......