еще одна сила сваггера - это возможность сгенерировать клиент для фронта. Мне, как фуллстэк разработчику, стало значительно легче жить после того, как добавил генерацию клиента и передачу типов в Ангуляр
@PlatinumTechTalks3 жыл бұрын
Абсолютно точно! Возможность уникальна.и если сначала относишься к ней скептически, то попробовав, думаешь, как мы жили без этого... про генерацию клиента мы тоже поговорим позже
@IvanenkoStepan3 жыл бұрын
Спасибо
@Saveaaa3 жыл бұрын
Спасибо , полезная инфа. А не подскажите какая технология подойдёт для приложения, в котором клиент добавляет записи через api , но при этом он должны обновить текущие данные у себя если кто-то добавил их помимо него. Rest вроде не может уведомлять клиентов о новых данных ?
@andrewmoryakov75563 жыл бұрын
Запишите, пожалуйста, видео об изменениях языка начиная, например, с 7 по 10 версию языка:) Думаю будет интересно.
@PlatinumTechTalks3 жыл бұрын
да, это очень интересная тема. на канале у нас есть три видео на эту тему: 1) Range и Index из C# 8: kzbin.info/www/bejne/hIjMdGWupK5ksJI 2) фишки C# 7.3: kzbin.info/www/bejne/lWHZeWmBhNt9sKs 3) C# 9: kzbin.info/www/bejne/eWaTZ6aiablrotU
@andrewmoryakov75563 жыл бұрын
@@PlatinumTechTalks Здорово, спасибо большое!
@ziegimondvishneuski33172 жыл бұрын
Я все сделал, как вы показали, но с внедрением версионирования, не видны элементы. Подскажите возможные причины пожалуйста
@PlatinumTechTalks2 жыл бұрын
Подскажите, о каких элементах идет речь?
@МаксимСпорт-ф3х2 жыл бұрын
Добрый день. У меня в .net 6 не отображается ProblemDetails в Schema, подскажите, пожалуйста, в чем проблема? using Microsoft.AspNetCore.Authentication.JwtBearer; using Notes.API.Middleware; using Notes.Application; using Notes.Application.Common.Mappings; using Notes.Application.Interfaces; using Notes.Persistence; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddApplication(); builder.Services.AddControllers(); builder.Services.AddPersistence(builder.Configuration); builder.Services.AddAutoMapper(config => { config.AddProfile(new AssemblyMappingProfile(typeof(Program).Assembly)); config.AddProfile(new AssemblyMappingProfile(typeof(INotesDbContext).Assembly)); }); builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyHeader(); policy.AllowAnyMethod(); policy.AllowAnyOrigin(); }); }); builder.Services.AddAuthentication(config => { config.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; config.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer("Bearer", options => { options.Authority = "localhost:7214/"; options.Audience = "NotesWebAPI"; options.RequireHttpsMetadata = false; }); // Learn more about configuring Swagger/OpenAPI at aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(config => { var xmlFile = $"{typeof(Program).Assembly.GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); config.IncludeXmlComments(xmlPath); }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); app.UseDeveloperExceptionPage(); } using (var scope = app.Services.CreateScope()) { try { var context = scope.ServiceProvider.GetRequiredService(); DbInitializer.Initialize(context); } catch (Exception) { } } app.UseCustomExceptionHandler(); app.UseHttpsRedirection(); app.UseAuthentication(); app.UseAuthorization(); app.UseCors("AllowAll"); app.MapControllers(); app.Run();