вроде как свагер готов

This commit is contained in:
gorbenko.pavel
2026-07-23 14:47:23 +05:00
parent f29fee8339
commit 52d3325f26
3 changed files with 39 additions and 1 deletions
+1
View File
@@ -14,5 +14,6 @@
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.10" /> <PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.10" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.3" /> <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.3" />
<PackageVersion Include="MediatR" Version="14.2.0" /> <PackageVersion Include="MediatR" Version="14.2.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="10.2.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>
+37 -1
View File
@@ -3,6 +3,7 @@ using Extensions.Hosting.AsyncInitialization;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi;
using Tnsu.ApprovalRoute.Api.Auth; using Tnsu.ApprovalRoute.Api.Auth;
using Tnsu.ApprovalRoute.Application; using Tnsu.ApprovalRoute.Application;
using Tnsu.ApprovalRoute.Application.Common.Interfaces; using Tnsu.ApprovalRoute.Application.Common.Interfaces;
@@ -15,7 +16,33 @@ builder.Services.AddApprovalRouteApplication();
builder.Services.AddApprovalRouteAuth(builder.Configuration); builder.Services.AddApprovalRouteAuth(builder.Configuration);
builder.Services.AddHttpContextAccessor(); builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<ICurrentUser, CurrentUserAccessor>(); builder.Services.AddScoped<ICurrentUser, CurrentUserAccessor>();
builder.Services.AddOpenApi(); builder.Services.AddOpenApi(options =>
{
options.AddDocumentTransformer((document, _, _) =>
{
document.Components ??= new OpenApiComponents();
document.Components.SecuritySchemes ??= new Dictionary<string, IOpenApiSecurityScheme>();
document.Components.SecuritySchemes["Bearer"] = new OpenApiSecurityScheme
{
Type = SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT",
Description = "Введите JWT токен"
};
return Task.CompletedTask;
});
options.AddOperationTransformer((operation, context, _) =>
{
operation.Security =
[
new OpenApiSecurityRequirement
{
[new OpenApiSecuritySchemeReference("Bearer", context.Document)] = []
}
];
return Task.CompletedTask;
});
});
builder.Services.AddHealthChecks(); builder.Services.AddHealthChecks();
builder.Services.AddControllers() builder.Services.AddControllers()
.AddJsonOptions(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); .AddJsonOptions(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
@@ -23,7 +50,16 @@ builder.Services.AddControllers()
var app = builder.Build(); var app = builder.Build();
if (app.Environment.IsDevelopment()) if (app.Environment.IsDevelopment())
{
app.MapOpenApi(); app.MapOpenApi();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/openapi/v1.json", "Tnsu Approval Route v1");
c.RoutePrefix = string.Empty;
c.ConfigObject.AdditionalItems["persistAuthorization"] = true;
c.EnableTryItOutByDefault();
});
}
app.MapHealthChecks("/health"); app.MapHealthChecks("/health");
@@ -12,5 +12,6 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" />
</ItemGroup> </ItemGroup>
</Project> </Project>