Vue多地址代理端口调用

发布于:2025-05-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

第一种方法

config.ts文件

配置多条代理服务端口 如下所示:
proxy: {
 '/app': {// 其他的端口
      target: 'http://125.124.5.117:12877/',
      changeOrigin: true
    }
    '/api': {//默认的端口
      // http://192.168.31.53:5173/
      target: 'http://192.168.31.199:18777/',
      changeOrigin: true,
      rewrite: path => path.replace(/^\/api/, '')
    }, 

封装的axios请求

src/utils/request.ts
import axios from 'axios';
 
 
const defaultConfig = {
  timeout: 5 * 1000,
  baseURL:'/api'  // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,
  //页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!
};
const instance = axios.create(Object.assign({}, defaultConfig));
 
instance.interceptors.request.use(
  function (config) {
    ...
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);
instance.interceptors.response.use(
  function (response) {
    ...
  },
  function (error) {
    ...
    return Promise.reject(error);
  }
);
export default instance;

请求时——

import request from '@/src/utils/request.js'
 
// 获取IP列表 (这个会默认用前缀 '/api')
export const getList = data => {
  return request({
    url: '/ipv6/list',
    method: 'post',
    data
  });
};
 
 
// 获取IP列表  (手动加另一个前缀 '/app')
export const getList = data => {
  return request({
    url: '/ipNetin/list',
    baseURL: '/app', // 这个 baseURL 会覆盖实例中默认的 baseURL(这里是动态的直接回覆盖默认的前缀)
    method: 'post',
    data
  });
};

第二种

config.ts文件

配置多条代理服务端口 如下所示:
PS(/^\/api/app, '/app')主要是这个 app是api的子级 然后指向 /app
proxy: {
 '/api/app': {// 其他的端口
      target: 'http://125.124.5.117:12877/',
      changeOrigin: true,
      rewrite: path => path.replace(/^\/api/app, '/app')//注意注意这里的区别
     // PS:(/^\/api/app, '/app')主要是这个 app是api的子级 然后指向 /app
    }
    '/api': {//默认的端口
      // http://192.168.31.53:5173/
      target: 'http://192.168.31.199:18777/',
      changeOrigin: true,
      rewrite: path => path.replace(/^\/api/, '')
    }, 

封装的axios请求

src/utils/request.ts
import axios from 'axios';
 
 
const defaultConfig = {
  timeout: 5 * 1000,
  baseURL:'/api'  // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,
  //页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!
};
const instance = axios.create(Object.assign({}, defaultConfig));
 
instance.interceptors.request.use(
  function (config) {
    ...
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);
instance.interceptors.response.use(
  function (response) {
    ...
  },
  function (error) {
    ...
    return Promise.reject(error);
  }
);
export default instance;

请求时——

import request from '@/src/utils/request.js'
 
// 获取IP列表 (这个会默认用前缀 '/api')
export const getList = data => {
  return request({
    url: '/ipv6/list',
    method: 'post',
    data
  });
};
 
 
// 获取IP列表  (手动加另一个前缀 '/app')
export const getList = data => {
  return request({
    url: '/ipNetin/list',//这里就不要多加/app了 不要写配置代理的前缀了 注意注意
    method: 'post',
    data
  });
};
这是大概的方法 具体详细方法跟这类似 也差不多