Files
SmyWorkCollect/SproutWorkCollect-Frontend/src/config/apiBase.js

39 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const DEFAULT_PROD_API_ORIGIN = 'https://work.api.shumengya.top';
const stripTrailingSlashes = (value) => value.replace(/\/+$/, '');
const stripApiSuffix = (value) => value.replace(/\/api\/?$/, '');
const hasHttpProtocol = (value) => /^https?:\/\//i.test(value);
export const getApiBaseUrl = () => {
const envUrl = process.env.REACT_APP_API_URL;
if (envUrl) {
const normalized = stripTrailingSlashes(envUrl);
// 避免生产环境错误使用相对路径(例如 /api导致请求打到前端自身域名
if (normalized.startsWith('/')) {
if (process.env.NODE_ENV === 'production') {
// eslint-disable-next-line no-console
console.warn(
`[SproutWorkCollect] REACT_APP_API_URL=${normalized} 是相对路径,已忽略并回退到默认后端:${DEFAULT_PROD_API_ORIGIN}/api`,
);
return `${DEFAULT_PROD_API_ORIGIN}/api`;
}
return normalized.endsWith('/api') ? normalized : `${normalized}/api`;
}
const absolute = hasHttpProtocol(normalized) ? normalized : `https://${normalized}`;
return absolute.endsWith('/api') ? absolute : `${absolute}/api`;
}
if (process.env.NODE_ENV === 'production') {
return `${DEFAULT_PROD_API_ORIGIN}/api`;
}
return 'http://localhost:5000/api';
};
export const getApiOrigin = () => stripApiSuffix(getApiBaseUrl());