Дневник сертифицированного .NET разработчика. Заметки, советы, новости из мира .NET и C#.
Для связи: @SBenzenko
Поддержать канал:
- https://boosty.to/netdeveloperdiary
- https://patreon.com/user?u=52551826
- https://pay.cloudtips.ru/p/70df3b3b
Post #1461
1.76K
День 1185. #ЧтоНовенького
Превью Обновлений ASP.NET Core в .NET 7
Вышло уже 3 превью новинок в ASP.NET Core в новой версии .NET 7, которая должна выйти в ноябре. Вот самое интересное, на мой взгляд.
1. Внедрение сервисов в методах контроллера
Теперь не обязательно использовать атрибут
В минимальных API теперь можно добавить аннотации для спецификаций OpenAPI. Либо через методы расширения:
Теперь можно выполнять связывание из заголовков HTTPS и строки запроса в массивы примитивных типов, строк или в
Фильтры выполняются перед основной логикой обработчика маршрута и могут использоваться для проверки и изменения параметров обработчика или перехвата выполнения обработчика.
Подробнее про них рассказывает Ник Чапсас https://youtu.be/Kt9TiXrwIp4
5. Привязка с использованием TryParse
Теперь вы можете привязывать значения параметров действия контроллера с помощью метода
- https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-2/
- https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-3/
Превью Обновлений ASP.NET Core в .NET 7
Вышло уже 3 превью новинок в ASP.NET Core в новой версии .NET 7, которая должна выйти в ноябре. Вот самое интересное, на мой взгляд.
1. Внедрение сервисов в методах контроллера
Теперь не обязательно использовать атрибут
[FromServices], сервис будет подставляться автоматически:public class MyController : ControllerBaseЭто можно отключить в настройках:
{
public ActionResult Get(MyService service) => Ok();
}
Services.Configure<ApiBehaviorOptions>(opt =>2. Описания конечных точек
{
opt.DisableImplicitFromServicesParameters = true;
})
В минимальных API теперь можно добавить аннотации для спецификаций OpenAPI. Либо через методы расширения:
app.MapGet("/hello", () => ...)
.WithDescription("Hello request");
Либо через атрибуты:app.MapGet("/hello", [EndpointSummary("Hello request")]() => ...);
3. Привязка массивов и StringValuesТеперь можно выполнять связывание из заголовков HTTPS и строки запроса в массивы примитивных типов, строк или в
StringValues:// GET /tags?q=1&q=24. Фильтры обработчиков маршрутов
app.MapGet("/tags", (int[] q) => $"1:{q[0]}, 2:{q[1]}");
// GET /tags?names=john&names=jack
app.MapGet("/tags", (string[] names) => $"1:{names[0]}, 2:{names[1]}");
app.MapGet("/tags", (StringValues names) => $"1:{names[0]}, 2:{names[1]} ");
Фильтры выполняются перед основной логикой обработчика маршрута и могут использоваться для проверки и изменения параметров обработчика или перехвата выполнения обработчика.
app.MapGet("/hello/{name}", HelloName)
.AddFilter(async (сontext, next) =>
{
return await next(сontext);
});
Это похоже на фильтры промежуточного ПО. Но теперь их можно «навесить» на отдельные конечные точки.Подробнее про них рассказывает Ник Чапсас https://youtu.be/Kt9TiXrwIp4
5. Привязка с использованием TryParse
Теперь вы можете привязывать значения параметров действия контроллера с помощью метода
TryParse. В примере ниже контроллер привязывает данные из строки запроса с помощью метода TryParse в типе параметра:public class TryParseController : ControllerBaseИсточники:
{
// GET /tryparse?data=MyName
[HttpGet]
public ActionResult Get([FromQuery]CustomParse data)
{
…
}
public class CustomParse
{
public string? Name { get; set; }
public static bool TryParse(string s, out CustomParse result)
{
if (s is null)
{
result = default;
return false;
}
result = new CustomParse { Name = s };
return true;
}
}
}
- https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-2/
- https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-3/
- 👍 2



