diff --git a/Configurations/SimApiOptions.cs b/Configurations/SimApiOptions.cs index cc7136f..ce890ca 100644 --- a/Configurations/SimApiOptions.cs +++ b/Configurations/SimApiOptions.cs @@ -1,11 +1,25 @@ using System; +using System.Collections.Generic; namespace SimApi.Configurations; public class SimApiOptions { + /// + /// Redis配置 + /// public string? RedisConfiguration { get; set; } + /// + /// 原样返回给前端的配置信息 + /// + public Dictionary? WebConfig { get; set; } + + /// + /// WebConfig返回是否包含版本信息 + /// + public bool WebConfigIncludeVersion { get; set; } = true; + /// /// 是否启用后台任务系统 *基于Hangfire /// diff --git a/Configurations/SimApiRouteOptions.cs b/Configurations/SimApiRouteOptions.cs index 847c643..ac4bd37 100644 --- a/Configurations/SimApiRouteOptions.cs +++ b/Configurations/SimApiRouteOptions.cs @@ -2,7 +2,7 @@ public class SimApiRouteOptions { - public string? VersionRoute = "/versions"; public string? LogoutRoute = "/auth/logout"; public string? UserInfoRoute = "/user/info"; + public string? WebConfigRoute = "/config"; } \ No newline at end of file diff --git a/Controllers/SimApiCommonController.cs b/Controllers/SimApiCommonController.cs index 57dcf28..ffb6192 100644 --- a/Controllers/SimApiCommonController.cs +++ b/Controllers/SimApiCommonController.cs @@ -1,13 +1,16 @@ using System.Collections.Generic; +using System.Linq; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; using SimApi.Attributes; using SimApi.Communications; +using SimApi.Configurations; using SimApi.Helpers; using static SimApi.Helpers.SimApiError; namespace SimApi.Controllers; -public class SimApiCommonController : SimApiBaseController +public class SimApiCommonController(SimApiOptions simApiOptions) : SimApiBaseController { /// /// 错误回馈页面 @@ -21,18 +24,27 @@ public class SimApiCommonController : SimApiBaseController Error(code); } - + /// + /// 给前端的自定义信息 + /// + /// [HttpPost, HttpGet] - public Dictionary Versions() + public Dictionary WebConfig() { - return new Dictionary + var resp = simApiOptions.WebConfig!.ToDictionary(); + if (simApiOptions.WebConfigIncludeVersion) { - { "SimApi", SimApiUtil.SimApiVersion }, - { "App", SimApiUtil.AppVersion } - }; + resp.Add("Versions", new Dictionary + { + { "SimApi", SimApiUtil.SimApiVersion }, + { "App", SimApiUtil.AppVersion } + }); + } + + return resp; } - - + + /// /// 获取已登录用户信息 /// diff --git a/SimApiExtensions.cs b/SimApiExtensions.cs index cb18bdc..96a4f07 100644 --- a/SimApiExtensions.cs +++ b/SimApiExtensions.cs @@ -36,6 +36,8 @@ public static class SimApiExtensions { var simApiOptions = new SimApiOptions(); options?.Invoke(simApiOptions); + simApiOptions.WebConfig ??= new(); + builder.AddSingleton(simApiOptions); if (simApiOptions.RedisConfiguration != null) { @@ -350,7 +352,6 @@ public static class SimApiExtensions } builder.AddSingleton(simApiOptions.SimApiRequestLogOptions); - builder.AddSingleton(simApiOptions); return builder; } @@ -461,18 +462,6 @@ public static class SimApiExtensions builder.UseMiddleware(); } - - if (options.SimApiRouteOptions.VersionRoute != null) - { - logger.LogInformation("注册内置Route: Versions => {}", options.SimApiRouteOptions.VersionRoute); - builder.MapControllerRoute(name: "Versions", pattern: options.SimApiRouteOptions.VersionRoute, - defaults: new - { - controller = "SimApiCommon", - action = "Versions" - }); - } - if (options.SimApiRouteOptions.UserInfoRoute != null) { logger.LogInformation("注册内置Route: UserInfo => {}", options.SimApiRouteOptions.UserInfoRoute); @@ -495,6 +484,17 @@ public static class SimApiExtensions }); } + if (options.SimApiRouteOptions.WebConfigRoute != null) + { + logger.LogInformation("注册内置Route: Logout => {}", options.SimApiRouteOptions.WebConfigRoute); + builder.MapControllerRoute(name: "WebConfig", pattern: options.SimApiRouteOptions.WebConfigRoute, + defaults: new + { + controller = "SimApiCommon", + action = "WebConfig" + }); + } + if (options.EnableSimApiDoc) { logger.LogInformation("开始配置SimApiDoc...");