HAKAN'S REQUIREMENT - Refactor API base URL configuration structure
Replaced ApiBaseUrl and DataApiBaseUrl with BaseUrl, ApiDefaultUrl, and service-specific configuration sections (AuthService, UserManagerService, DbFirstService). Updated AppSettings and all code references to use the new structure. Revised logic for HTTP client base URL selection to prefer service-specific settings. Updated appsettings files and added an example configuration for clarity and maintainability.
This commit is contained in:
@@ -28,7 +28,7 @@ public static class DashboardConfiguratorFactory
|
||||
}
|
||||
|
||||
var dashboardBaseUrl = configuration["Dashboard:BaseUrl"]
|
||||
?? configuration["ApiBaseUrl"]
|
||||
?? configuration["BaseUrl"]
|
||||
?? configuration["ASPNETCORE_URLS"]?.Split(';', StringSplitOptions.RemoveEmptyEntries).FirstOrDefault()
|
||||
?? "https://localhost:7204";
|
||||
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
|
||||
public class AppSettings
|
||||
{
|
||||
public string ApiBaseUrl { get; set; } = string.Empty;
|
||||
public string DataApiBaseUrl { get; set; } = string.Empty;
|
||||
public string BaseUrl { get; set; } = string.Empty;
|
||||
public string ApiDefaultUrl { get; set; } = string.Empty;
|
||||
public AuthServiceSettings AuthService { get; set; } = new();
|
||||
}
|
||||
|
||||
public class AuthServiceSettings
|
||||
{
|
||||
public string BaseUrl { get; set; } = string.Empty;
|
||||
public string Login { get; set; } = string.Empty;
|
||||
public string Logout { get; set; } = string.Empty;
|
||||
public string Check { get; set; } = string.Empty;
|
||||
}
|
||||
@@ -45,8 +45,8 @@
|
||||
private string SelectedDashboardId { get; set; } = string.Empty;
|
||||
private string DashboardKey => $"{SelectedDashboardId}-{(IsDesigner ? "designer" : "viewer")}";
|
||||
|
||||
private string DashboardEndpoint => $"{AppSettingsOptions.Value.ApiBaseUrl.TrimEnd('/')}/api/dashboard";
|
||||
private string HubEndpoint => $"{AppSettingsOptions.Value.ApiBaseUrl.TrimEnd('/')}/hubs/dashboards";
|
||||
private string DashboardEndpoint => $"{AppSettingsOptions.Value.BaseUrl.TrimEnd('/')}/api/dashboard";
|
||||
private string HubEndpoint => $"{AppSettingsOptions.Value.BaseUrl.TrimEnd('/')}/hubs/dashboards";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
@@ -33,25 +33,28 @@ static HttpClient CreateHttpClientWithCookies(CookieContainer cookieContainer, s
|
||||
builder.Services.AddScoped<IAuthApiClient>(sp =>
|
||||
{
|
||||
var cc = sp.GetRequiredService<CookieContainer>();
|
||||
var client = CreateHttpClientWithCookies(cc, appSettings.ApiBaseUrl);
|
||||
var authBaseUrl = !string.IsNullOrWhiteSpace(appSettings.AuthService.BaseUrl)
|
||||
? appSettings.AuthService.BaseUrl
|
||||
: appSettings.BaseUrl;
|
||||
var client = CreateHttpClientWithCookies(cc, authBaseUrl);
|
||||
return new AuthApiClient(client, sp.GetRequiredService<AuthService>(), cc);
|
||||
});
|
||||
|
||||
var dataApiBaseUrl = !string.IsNullOrWhiteSpace(appSettings.DataApiBaseUrl)
|
||||
? appSettings.DataApiBaseUrl
|
||||
: appSettings.ApiBaseUrl;
|
||||
var apiDefaultUrl = !string.IsNullOrWhiteSpace(appSettings.ApiDefaultUrl)
|
||||
? appSettings.ApiDefaultUrl
|
||||
: appSettings.BaseUrl;
|
||||
|
||||
builder.Services.AddScoped<ICatalogApiClient>(sp =>
|
||||
new CatalogApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), dataApiBaseUrl)));
|
||||
new CatalogApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), apiDefaultUrl)));
|
||||
|
||||
builder.Services.AddScoped<IDashboardApiClient>(sp =>
|
||||
new DashboardApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), dataApiBaseUrl)));
|
||||
new DashboardApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), apiDefaultUrl)));
|
||||
|
||||
builder.Services.AddScoped<IMassDataApiClient>(sp =>
|
||||
new MassDataApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), dataApiBaseUrl)));
|
||||
new MassDataApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), apiDefaultUrl)));
|
||||
|
||||
builder.Services.AddScoped<ILayoutApiClient>(sp =>
|
||||
new LayoutApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), dataApiBaseUrl)));
|
||||
new LayoutApiClient(CreateHttpClientWithCookies(sp.GetRequiredService<CookieContainer>(), apiDefaultUrl)));
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
@@ -5,12 +5,25 @@
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"ApiBaseUrl": "http://172.24.12.39:9090/",
|
||||
"DataApiBaseUrl": "https://localhost:7204/",
|
||||
"ApiDefaultUrl": "https://localhost:7204/",
|
||||
"AuthService": {
|
||||
"BaseUrl": "http://172.24.12.39:9090/",
|
||||
"Login": "/api/Auth/db-first/login",
|
||||
"Logout": "auth/logout",
|
||||
"Check": "auth/check"
|
||||
},
|
||||
"UserManagerService": {
|
||||
"BaseUrl": null,
|
||||
"GetUserInfo": "user/info",
|
||||
"UpdateUserInfo": "user/update"
|
||||
},
|
||||
"DbFirstService": {
|
||||
"BaseUrl": "https://localhost:7204/",
|
||||
"GetData": "dbfirst/data",
|
||||
"UpdateData": "dbfirst/update"
|
||||
},
|
||||
"BrowserLink": {
|
||||
"Enabled": false
|
||||
},
|
||||
"DetailedErrors": true
|
||||
}
|
||||
|
||||
|
||||
|
||||
19
DbFirst.BlazorWebApp/appsettings.Example.json
Normal file
19
DbFirst.BlazorWebApp/appsettings.Example.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"ApiDefaultUrl": "https://localhost:7204/",
|
||||
"AuthService": {
|
||||
"BaseUrl": "http://172.24.12.39:9090/",
|
||||
"Login": "/api/Auth/db-first/login",
|
||||
"Logout": "auth/logout",
|
||||
"Check": "auth/check"
|
||||
},
|
||||
"UserManagerService": {
|
||||
"BaseUrl": null,
|
||||
"GetUserInfo": "user/info",
|
||||
"UpdateUserInfo": "user/update"
|
||||
},
|
||||
"DbFirstService": {
|
||||
"BaseUrl": "https://localhost:7204/",
|
||||
"GetData": "dbfirst/data",
|
||||
"UpdateData": "dbfirst/update"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,25 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"ApiDefaultUrl": "https://localhost:7204/",
|
||||
"AuthService": {
|
||||
"BaseUrl": null,
|
||||
"Login": "auth/login",
|
||||
"Logout": "auth/logout",
|
||||
"Check": "auth/check"
|
||||
},
|
||||
"UserManagerService": {
|
||||
"BaseUrl": null,
|
||||
"GetUserInfo": "user/info",
|
||||
"UpdateUserInfo": "user/update"
|
||||
},
|
||||
"ApiBaseUrl": "http://172.24.12.39:9090/",
|
||||
"DataApiBaseUrl": "https://localhost:7204/",
|
||||
"AllowedHosts": "*"
|
||||
"DbFirstService": {
|
||||
"BaseUrl": null,
|
||||
"GetData": "dbfirst/data",
|
||||
"UpdateData": "dbfirst/update"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user