Implement endpoints with Services Dependency Injection.
**Note: This implementation is not in minimalAPI way and not optimized, expected to be changed soon.** Add: `UserService` and its interface `IUserService`. Fix: `UserEndpoint` is now in instance class style with DI to work. Fix: change main program to work with above design.
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
using System.CommandLine;
|
||||
using OptixServe.Api.Endpoints;
|
||||
using OptixServe.Core.Services;
|
||||
|
||||
class Program
|
||||
{
|
||||
@ -41,6 +42,7 @@ class Program
|
||||
var configFile = parseResult.GetValue(configOption);
|
||||
builder.AddConfigurationWithCommand(configFile);
|
||||
|
||||
builder.RegisterServices();
|
||||
builder.RegiserJsonContext();
|
||||
|
||||
var app = builder.Build();
|
||||
@ -61,27 +63,6 @@ class Program
|
||||
/// </summary>
|
||||
static class ExtensionMethods
|
||||
{
|
||||
/// <summary>
|
||||
/// Registers all API endpoints
|
||||
/// </summary>
|
||||
/// <param name="app">WebApplication instance</param>
|
||||
public static void RegisterEndpoints(this WebApplication app)
|
||||
{
|
||||
UserEndpoint.Register(app);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures JSON serialization options with custom context
|
||||
/// </summary>
|
||||
/// <param name="builder">WebApplicationBuilder instance</param>
|
||||
public static void RegiserJsonContext(this WebApplicationBuilder builder)
|
||||
{
|
||||
builder.Services.ConfigureHttpJsonOptions(options =>
|
||||
{
|
||||
options.SerializerOptions.TypeInfoResolverChain.Add(UserJsonContext.Default);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds configuration sources to the application builder
|
||||
/// </summary>
|
||||
@ -105,4 +86,39 @@ static class ExtensionMethods
|
||||
|
||||
builder.Configuration.AddConfiguration(configurationBuilder.Build());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures JSON serialization options with custom context
|
||||
/// </summary>
|
||||
/// <param name="builder">WebApplicationBuilder instance</param>
|
||||
public static void RegiserJsonContext(this WebApplicationBuilder builder)
|
||||
{
|
||||
builder.Services.ConfigureHttpJsonOptions(options =>
|
||||
{
|
||||
options.SerializerOptions.TypeInfoResolverChain.Add(UserJsonContext.Default);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures services for DI
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
public static void RegisterServices(this WebApplicationBuilder builder)
|
||||
{
|
||||
// Application services
|
||||
builder.Services.AddScoped<IUserService, UserService>();
|
||||
|
||||
// WebAPI Endpoint services
|
||||
builder.Services.AddScoped<UserEndpoint>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Registers all API endpoints
|
||||
/// </summary>
|
||||
/// <param name="app">WebApplication instance</param>
|
||||
public static void RegisterEndpoints(this WebApplication app)
|
||||
{
|
||||
UserEndpoint.Register(app);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user