提交 7bb70cad 作者: 方治民

feat: 网络资源代理处理方式优化、调整开发环境 API_URL_PREFIX

上级 e9325476
import { useGlobSetting } from '/@/hooks/setting'
const globSetting = useGlobSetting()
const API_URL_PREFIX = globSetting.urlPrefix
let HOST = globSetting.apiUrl
let API_URL = `${HOST}`
let API_URL_PREFIX = globSetting.urlPrefix
// =============================================================================
// ✨ 生产环境
......@@ -13,6 +13,7 @@ let API_URL = `${HOST}`
// 📖 开发环境
HOST = globSetting.apiUrl
API_URL = `${HOST}`
API_URL_PREFIX = globSetting.urlPrefix
// 🔦 检查生产环境,使用对应 env 中的配置,保留原有方式方便开发中调试
API_URL = import.meta.env.MODE !== 'development' ? globSetting.apiUrl : API_URL
......
/**
* FIXD: 固定说明,此文件内不允许使用 import.env 之类的环境变量,否则会导致地图模块异常
* FIXED: 固定说明,此文件内不允许使用 import.env 之类的环境变量,否则会导致使用 Webview/RenderJS 相关模块异常
*/
const PROXY_LIST = [
const PROXY_LIST: [[string, string]?] = [
// eg: 开发环境
// ['http://192.168.1.100:18100', `http://proxy.yiring.com:41180`],
// eg: 测试环境
// ['http://10.111.117.15:18100', `http://proxy.yiring.com:42180`],
// eg: 生产环境
// ['http://192.168.0.100:18100', `https://oss.app.yiring.com`],
// [`http://192.168.0.100:18100`, `https://oss.beta.app.yiring.com`],
]
/**
......@@ -28,7 +28,7 @@ export const getExtranetUrl = (url: string): string => {
/**
* 将代理/预览地址(公网)转换成内部地址(内网)
* eg: 主要用于解决内网文件上传后预览,但是实际上传存储时还是内网地址的问题
* @param url 代理/公网地址
* @param url 包含代理/公网地址的内容
*/
export const getIntranetUrl = (url: string): string => {
let uri = url
......@@ -46,13 +46,22 @@ export const getIntranetUrl = (url: string): string => {
* @returns 替换本地链接后的数据结果
*/
export const handleResponseResource = <T>(body: T, options: Recordable) => {
if (options.apiUrl.includes('proxy.yiring.com') && typeof body === 'object') {
let text = JSON.stringify(body)
for (const [intranet, extranet] of PROXY_LIST) {
// 当需要处理内外网资源地址映射时,进行内容处理
const isIntranet = options.apiUrl.includes(intranet)
const isExtranet = options.apiUrl.includes(extranet)
if (isIntranet || isExtranet) {
const isString = typeof body === 'string'
const isObject = typeof body === 'object'
// 处理内网地址的预览问题
text = getExtranetUrl(text)
return JSON.parse(text) as T
// 处理有效数据
if (isString || isObject) {
let text = isString ? body : JSON.stringify(body)
// 说明: 如果接口地址是内网,就需要将外网链接转换成内网链接,如果是外网接口地址,则需要将内网地址转换成外网链接,来保证无论内外网访问平台资源都是正常的
text = isExtranet ? getExtranetUrl(text) : getIntranetUrl(text)
return (isString ? text : JSON.parse(text)) as T
}
}
}
return body
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论