Перейти к содержанию

Создание простых конечных точек с помощью 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.

Также нужно учитывать, что маршрутизация конечных точек может работать существенно медленнее, чем простое ветвление, поэтому в некоторых случаях лучше избегать маршрутизации конечных точек.


Последнее обновление : 9 мая 2023 г.
Дата создания : 26 октября 2022 г.

Комментарии

Комментарии