Restore 0.1.5 version from stash
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
const TRAILING_SLASH = /\/$/;
|
||||
|
||||
export function getBackendBaseUrl(): string {
|
||||
const raw = process.env.BACKEND_URL ?? process.env.NEXT_PUBLIC_BACKEND_URL;
|
||||
if (!raw) {
|
||||
throw new Error("BACKEND_URL 未配置");
|
||||
}
|
||||
return raw.replace(TRAILING_SLASH, "");
|
||||
}
|
||||
|
||||
export function tryGetBackendBaseUrl(): string | null {
|
||||
try {
|
||||
return getBackendBaseUrl();
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
type SearchParamsInit = Record<string, string | number | boolean | undefined> | URLSearchParams;
|
||||
|
||||
export function buildBackendUrl(path: string, params?: SearchParamsInit): URL {
|
||||
const base = getBackendBaseUrl();
|
||||
const url = new URL(path, base);
|
||||
if (params) {
|
||||
const search =
|
||||
params instanceof URLSearchParams
|
||||
? params
|
||||
: new URLSearchParams(
|
||||
Object.entries(params).reduce<Record<string, string>>((acc, [key, value]) => {
|
||||
if (value !== undefined) {
|
||||
acc[key] = String(value);
|
||||
}
|
||||
return acc;
|
||||
}, {}),
|
||||
);
|
||||
search.forEach((value, key) => {
|
||||
if (value !== undefined && value !== null) {
|
||||
url.searchParams.set(key, value);
|
||||
}
|
||||
});
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
export async function fetchBackend(path: string, init?: RequestInit, params?: SearchParamsInit) {
|
||||
const url = buildBackendUrl(path, params);
|
||||
return fetch(url, init);
|
||||
}
|
||||
Reference in New Issue
Block a user