统一API Base URL保存与请求时去除末尾斜杠

This commit is contained in:
mtvpls
2026-07-25 10:57:04 +08:00
parent 19f4957160
commit ca798177b9
16 changed files with 191 additions and 46 deletions
+95
View File
@@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any, no-console, @typescript-eslint/no-non-null-assertion */
import { db } from '@/lib/db';
import { normalizeApiBaseUrl } from '@/lib/url';
import { AdminConfig } from './admin.types';
@@ -1047,6 +1048,100 @@ export function configSelfCheck(adminConfig: AdminConfig): AdminConfig {
}
}
// API Base URL 统一去尾斜杠,避免拼接路径时出现 //
const site = adminConfig.SiteConfig;
if (site) {
site.DoubanProxy = normalizeApiBaseUrl(site.DoubanProxy);
site.DoubanImageProxy = normalizeApiBaseUrl(site.DoubanImageProxy);
site.DanmakuApiBase = normalizeApiBaseUrl(site.DanmakuApiBase);
site.TMDBProxy = normalizeApiBaseUrl(site.TMDBProxy);
site.TMDBReverseProxy = normalizeApiBaseUrl(site.TMDBReverseProxy);
site.BangumiApiBaseUrl = normalizeApiBaseUrl(site.BangumiApiBaseUrl);
site.BangumiImageBaseUrl = normalizeApiBaseUrl(site.BangumiImageBaseUrl);
site.BangumiProxy = normalizeApiBaseUrl(site.BangumiProxy);
site.PansouApiUrl = normalizeApiBaseUrl(site.PansouApiUrl);
site.MagnetProxy = normalizeApiBaseUrl(site.MagnetProxy);
site.MagnetMikanReverseProxy = normalizeApiBaseUrl(
site.MagnetMikanReverseProxy
);
site.MagnetDmhyReverseProxy = normalizeApiBaseUrl(
site.MagnetDmhyReverseProxy
);
site.MagnetAcgripReverseProxy = normalizeApiBaseUrl(
site.MagnetAcgripReverseProxy
);
site.MagnetNyaaReverseProxy = normalizeApiBaseUrl(
site.MagnetNyaaReverseProxy
);
site.OIDCIssuer = normalizeApiBaseUrl(site.OIDCIssuer);
}
if (adminConfig.OpenListConfig) {
adminConfig.OpenListConfig.URL = normalizeApiBaseUrl(
adminConfig.OpenListConfig.URL
);
adminConfig.OpenListConfig.OfflineDownloadURL = normalizeApiBaseUrl(
adminConfig.OpenListConfig.OfflineDownloadURL
);
}
if (adminConfig.MusicConfig) {
adminConfig.MusicConfig.BaseUrl = normalizeApiBaseUrl(
adminConfig.MusicConfig.BaseUrl
);
}
if (adminConfig.XiaoyaConfig) {
adminConfig.XiaoyaConfig.ServerURL = normalizeApiBaseUrl(
adminConfig.XiaoyaConfig.ServerURL
);
}
if (adminConfig.SuwayomiConfig) {
adminConfig.SuwayomiConfig.ServerURL = normalizeApiBaseUrl(
adminConfig.SuwayomiConfig.ServerURL
);
}
if (adminConfig.EmbyConfig) {
if (adminConfig.EmbyConfig.ServerURL) {
adminConfig.EmbyConfig.ServerURL = normalizeApiBaseUrl(
adminConfig.EmbyConfig.ServerURL
);
}
if (Array.isArray(adminConfig.EmbyConfig.Sources)) {
adminConfig.EmbyConfig.Sources = adminConfig.EmbyConfig.Sources.map(
(source) => ({
...source,
ServerURL: normalizeApiBaseUrl(source.ServerURL),
})
);
}
}
if (adminConfig.AIConfig) {
adminConfig.AIConfig.OpenAIBaseURL = normalizeApiBaseUrl(
adminConfig.AIConfig.OpenAIBaseURL
);
adminConfig.AIConfig.CustomBaseURL = normalizeApiBaseUrl(
adminConfig.AIConfig.CustomBaseURL
);
adminConfig.AIConfig.DecisionOpenAIBaseURL = normalizeApiBaseUrl(
adminConfig.AIConfig.DecisionOpenAIBaseURL
);
adminConfig.AIConfig.DecisionCustomBaseURL = normalizeApiBaseUrl(
adminConfig.AIConfig.DecisionCustomBaseURL
);
}
if (adminConfig.TelegramConfig) {
adminConfig.TelegramConfig.apiBaseUrl = normalizeApiBaseUrl(
adminConfig.TelegramConfig.apiBaseUrl
);
}
// 注意:OPDS source.url 是完整目录 URL,保留末尾 / 以便相对路径解析
return adminConfig;
}