Новинки для Разработки API в .NET 8
В .NET 8 превью 4 представлены несколько новинок, которые могут упростить жизнь при разработке API.
1. Расширена поддержка привязки форм в минимальных API
Параметры отправленной формы выводятся без необходимости использования атрибута FromForm. Поддержка включает: IFormCollection, IFormFile и IFormFileCollection. Метаданные OpenAPI для параметров формы также выводятся автоматически для поддержки интеграции со Swagger UI.
В приведённом ниже примере кода демонстрируется реализация минимального API, который обрабатывает загрузку файлов, используя выведение параметра типа IFormFile:
var app = WebApplication.Create();Эта функция поддерживается как в минимальных API, использующих генерацию кода во время выполнения, так и в минимальных API, использующих новую генерацию кода во время компиляции для сценариев Native AOT.
string GetPath(
string fileName,
string dir = "uploads")
{
var dirPath = Path.Combine(
app.Environment.ContentRootPath,
dir);
Directory.CreateDirectory(dirPath);
return Path.Combine(dirPath, fileName);
}
async Task Upload(
IFormFile file,
string fileName)
{
var filePath = GetPath(fileName);
await using var stream =
new FileStream(filePath, FileMode.Create);
await file.CopyToAsync(stream);
}
app.MapPost("/upload", async (IFormFile file) =>
{
var fileName = Guid.NewGuid().ToString("N")
+ Path.GetExtension(file.FileName);
await Upload(file, fileName);
return TypedResults.Ok("Uploaded successfully!");
});
app.Run();
Примечание: При реализации форм в приложении важно защищаться от XSRF-атак. В этом расширенном примере показано, как использовать сервисы ASP.NET для создания и проверки маркеров защиты от подделки межсайтовых запросов в минимальных API.
2. Шаблон проекта API включает файл .http
Шаблон проекта API (созданный с помощью
dotnet new api) теперь включает файл .http, который можно использовать для отправки запросов на конечные точки, определённые в приложении, из нового редактора HTTP в Visual Studio.@MyApi_HostAddress = http://localhost:5233Коротко про редактор HTTP в Visual Studio рассказывается в этом видео.
GET {{MyApi_HostAddress}}/todos/
Accept: application/json
###
GET {{MyApi_HostAddress}}/todos/1
Accept: application/json
###
Источник: https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/#api-authoring