ASP.NET Core Web API Denetleyicileri
- 4 dakika
Önceki alıştırmada, örnek hava durumu tahmin verileri sağlayan bir web uygulaması oluşturdunuz ve ardından HTTP Okuma-Değerlendirme-Yazdırma Döngüsü'nde (REPL) 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 WeatherController işlevsel bir web API'sini oluşturmak için temel sınıfı ve birkaç .NET özniteliğini nasıl ControllerBase 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 Get() yürütülmesine neden olurWeatherForecastController.
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.
Not
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 belirli 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.
Not
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ülen öğelerin 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.
Artık bir web API denetleyicisinin temel bileşenlerini bildiğinize göre, kendi PizzaController sınıfınızı oluşturmaya hazırsınız.