ASP.NET Core Web API Denetleyicileri

Tamamlandı

Önceki alıştırmada, örnek hava durumu tahmin verileri sağlayan bir web uygulaması oluşturdunuz ve ardından HTTP REPL'de bu verilerle etkileşime geçtiniz.

Kendi PizzaController sınıfınızı yazmaya başlamadan önce, nasıl çalıştığını anlamak için örnekteki WeatherController kodu inceleyelim. Bu ünitede, birkaç düzine kod satırı içinde ControllerBase işlevsel bir web API'sini oluşturmak için temel sınıfı ve birkaç .NET özniteliğini nasıl WeatherController kullandığını öğreneceksiniz. Bu kavramları anladıktan sonra kendi PizzaController sınıfınızı yazmaya hazırsınız demektir.

Sınıfın tamamının WeatherController kodu aşağıdadır. Henüz bir anlam ifade etmiyorsa endişelenmeyin. Adım adım ilerleyelim.

using Microsoft.AspNetCore.Mvc;

namespace ContosoPizza.Controllers;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

Temel sınıf: ControllerBase

Denetleyici, eylemler olarak bilinen bir veya daha fazla genel yönteme sahip bir ortak sınıftır. Kural gereği, bir denetleyici proje kök dizininin Controllers dizinine yerleştirilir. Eylemler yönlendirme yoluyla HTTP uç noktaları olarak kullanıma sunulur. Bu nedenle, bir HTTP GET isteği https://localhost:{PORT}/weatherforecast sınıfının yönteminin WeatherForecastController yürütülmesine neden olurGet().

Dikkate alınan ilk şey, bu sınıfın temel sınıftan devraldığıdır ControllerBase . Bu temel sınıf, HTTP isteklerini işlemek için çok fazla standart işlevsellik sağlar, böylece uygulamanız için belirli iş mantığına odaklanabilirsiniz.

Dekont

ASP.NET Core'da Razor Pages veya model-view-controller (MVC) mimarisi geliştirme deneyimine sahipseniz sınıfını Controller kullandınız. Controller sınıfından türeterek bir web API’si denetleyicisi oluşturmayın. Controller ' den ControllerBase türetilir ve görünümler için destek ekler; bu nedenle web API'leri isteklerini değil web sayfalarını işlemeye yöneliktir.

API denetleyicisi sınıf öznitelikleri

aşağıdaki kodda gösterildiği gibi öğesine WeatherForecastControlleriki önemli öznitelik uygulanır:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

[ApiController], web API'leri oluşturmayı kolaylaştıran düşünceli davranışlar sağlar. Bazı davranışlar parametre kaynağı çıkarımını, gereksinim olarak öznitelik yönlendirmeyi ve model doğrulama hata işlemegeliştirmelerini* içerir.

[Route], [controller] yönlendirme desenini tanımlar. Denetleyicinin adı (Denetleyici soneki olmadan büyük/küçük harfe duyarsız), belirtecin [controller] yerini alır. Bu denetleyici, için https://localhost:{PORT}/weatherforecastistekleri işler.

Dekont

yolu, içinde api/[controller]olduğu gibi statik dizeler içerebilir. Bu örnekte, bu denetleyici için https://localhost:{PORT}/api/weatherforecastbir istek işleyecek.

yöntemiyle Get() hava durumu sonuçları sağlama

WeatherForecastController özniteliği tarafından [HttpGet(Name = "GetWeatherForecast")] belirlenen tek bir denetleyici eylemi içerir. Bu öznitelik HTTP GET isteklerini yöntemine public IEnumerable<WeatherForecast> Get() yönlendirir. Önceki alıştırmada gördüğünüz gibi, hava durumu sonuçlarının döndürülmeye neden olma istekleri https://localhost:{PORT}/weatherforecast .

Bu modülün ilerleyen bölümlerinde öğrendiğiniz gibi, diğer yaygın eylemler CRUD işlemleri (GET, PUT, , POSTDELETE) gerçekleştiren bir web API'si ile ilişkilendirilir. Ancak BIR API denetleyicisinin yalnızca bir denetleyici eylemi uygulaması gerekir.

Bu durumda döndürülenlerin tam listesini WeatherForecast alırsınız. bu GET işlem, bir tanımlayıcı geçirerek tek bir öğenin alınmasına da olanak tanır. ASP.NET özniteliğini [HttpGet("{id}")] kullanarak tek bir öğe alabilirsiniz. Sonraki alıştırmada bu özniteliği uygulayacaksınız.

Bir web API denetleyicisinin temel bileşenlerini öğrendiğinize göre artık kendi PizzaController sınıfınızı oluşturmaya hazırsınız.

Bilgilerinizi kontrol edin

1.

Özniteliğin amacı [ApiController] nedir?