Создание простых конечных точек с помощью MapGet и WriteJsonAsync¶
Помимо преобразования компонента промежуточного ПО в конечную точку (с созданием выделенного конвейера) можно создавать конечные точки напрямую при помощи метода расширения MapGet():
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/ping", (HttpContext ctx) => ctx.Response.WriteAsync("pong"));
endpoints.MapRazorPages();
endpoints.MapHealthChecks("/healthz");
});
}
Метод MapGet() принимает шаблон маршрута первым параметром. Также существуют аналогичные методы расширения для других HTTP-методов, такие как MapPost() и MapPut().
В ASP.NET Core 5.0 появились дополнительные методы расширения, позволяющие легко читать и писать JSON при помощи сериализатора System.Text.Json.
Напишем простую конечную точку "/echo", считывающую JSON из тела запроса и пишущую его в ответ.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/echo", (HttpContext ctx) =>
{
var model = await ctx.Request.ReadFromJsonAsync<MyCustomType>();
await ctx.Response.WriteAsJsonAsync(model);
});
endpoints.MapRazorPages();
endpoints.MapHealthChecks("/healthz");
});
}
Совет
Используйте методы расширения Map* и вспомогательные методы работы с JSON, если всё, что вам нужно — некое простое API. Если требуются дополнительные функции, такие как валидация, привязка модели или интеграция с OpenAPI, используйте контроллеры веб-API.
Также нужно учитывать, что маршрутизация конечных точек может работать существенно медленнее, чем простое ветвление, поэтому в некоторых случаях лучше избегать маршрутизации конечных точек.
Дата создания : 26 октября 2022 г.