ASP.NET Core Web API Denetleyicileri
Ö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 WeatherForecastController
iki ö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}/weatherforecast
istekleri 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/weatherforecast
bir 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
, , POST
DELETE
) 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.