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...");