57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
/**
|
||
* API 配置工具
|
||
* 提供统一的 API 基础地址获取方法
|
||
*/
|
||
|
||
/**
|
||
* 获取 API 基础 URL
|
||
*
|
||
* 工作原理:
|
||
* - 生产环境: 返回空字符串,使用相对路径
|
||
* - Mock 模式 (REACT_APP_API_URL=""): 返回空字符串,让 MSW 拦截请求
|
||
* - 开发模式: 返回后端服务器地址
|
||
*
|
||
* @returns {string} API 基础地址
|
||
*
|
||
* @example
|
||
* const response = await fetch(getApiBase() + '/api/users');
|
||
*/
|
||
export const getApiBase = () => {
|
||
// 生产环境使用相对路径
|
||
if (process.env.NODE_ENV === 'production') {
|
||
return '';
|
||
}
|
||
|
||
// 检查是否定义了 REACT_APP_API_URL(包括空字符串)
|
||
// 使用 !== undefined 而不是 || 运算符,正确处理空字符串
|
||
const apiUrl = process.env.REACT_APP_API_URL;
|
||
if (apiUrl !== undefined) {
|
||
return apiUrl; // Mock 模式下返回 '',其他情况返回配置的值
|
||
}
|
||
|
||
// 未配置时的默认后端地址
|
||
return 'http://49.232.185.254:5001';
|
||
};
|
||
|
||
/**
|
||
* 检查是否处于 Mock 模式
|
||
* @returns {boolean}
|
||
*/
|
||
export const isMockMode = () => {
|
||
return process.env.REACT_APP_ENABLE_MOCK === 'true';
|
||
};
|
||
|
||
/**
|
||
* 获取完整的 API URL
|
||
* @param {string} path - API 路径,应以 / 开头
|
||
* @returns {string} 完整的 URL
|
||
*
|
||
* @example
|
||
* const url = getApiUrl('/api/users');
|
||
* // Mock 模式: '/api/users'
|
||
* // 开发模式: 'http://49.232.185.254:5001/api/users'
|
||
*/
|
||
export const getApiUrl = (path) => {
|
||
return getApiBase() + path;
|
||
};
|