ASP.NET Core Web API'si Denetleyicileri
Önceki alıştırmada, örnek hava durumu tahmin verileri sağlayan ve ardından HTTP REPL'de bu verilerle etkileşime geçmiş bir web uygulaması oluşturduk.
Kendi yazmamıza başlamadan önce, nasıl çalıştığını anlamak için PizzaController örnekteki WeatherController koda göz atabilirsiniz. Bu bölümde, birkaç düzine kod satırıyla işlevsel bir web API'si oluşturmak için temel sınıfı ve birkaç .NET özniteliğini nasıl WeatherController ControllerBase kullandığını görüyorsunuz. Bu kavramları anlalarımızın ardından kendi kavramlarımızı yazmaya hazır PizzaController oluruz.
WeatherForecastController'i keşfetme
Sınıfın tamamı için kod şu WeatherController şekildedir. Henüz bir anlam ifade etmiyorsa endişelenmeyin, bunu adım adım ilerleriz.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
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]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
}
Temel sınıf: ControllerBase
Denetleyici, eylem olarak bilinen bir veya daha fazla genel yöntemi olan bir genel sınıftır. Kural gereği, denetleyici proje kökünün Controllers dizinine yerleştirilir. Eylemler yönlendirme yoluyla HTTP uç noktaları olarak açığa çıkar, bu nedenle bir HTTP GET isteğinin sınıfının http://localhost:5000/weatherforecast Get() WeatherForecastController yönteminin yürütüldüklerine neden olur.
Dikkat etmek gereken ilk şey, bu sınıfın ControllerBase temel sınıfından devralmasıdır. Bu temel sınıf, HTTP isteklerini işlemeye yönelik çok sayıda standart işlevsellik sağlar ve bu da uygulamanıza özgü iş mantığına odaklanmanızı sağlar.
Not
ASP.NET Core'de Razor Pages veya MVC geliştirme deneyimi ASP.NET Core Denetleyicisini kullandınız. Controller sınıfından türeterek bir web API denetleyicisi oluşturma. Denetleyici ControllerBase'den türetildi ve görünümler için destek ekler, bu nedenle web API'si isteklerini değil web sayfalarını işlemeye özeldir.
API Controller sınıfı öznitelikleri
Aşağıda gösterildiği gibi WeatherForecastController'a iki önemli öznitelik uygulanmıştır.
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
[ApiController] , web API'leri derlemeyi kolaylaştıran düşünceye sahip davranışları sağlar. Davranışlar arasında parametre kaynağı çıkarımı, gereksinim olarak öznitelik yönlendirme ve model doğrulama hatası işleme geliştirmeleri sayılabilir.
[Route], [controller] yönlendirme desenini tanımlar. Belirteci denetleyicinin adıyla değiştirilir (Denetleyici soneki olmadan [controller] büyük/küçük harfe duyarlı değildir). için http://localhost:5000/weatherforecast istekler bu denetleyici tarafından ele almaktadır.
Not
api/[controller] içinde olduğu gibi, rota statik dizeler içerebilir. Bu örnekte, isteği http://localhost:5000/api/weatherforecast bu denetleyici tarafından işlenebilir.
Hava durumu sonuçlarını yöntemiyle Get() sağlama
WeatherForecastController, özniteliği tarafından belirlenen tek bir denetleyici eylemi [HttpGet] içerir. Bu öznitelik, HTTP GET isteklerini yöntemine public IEnumerable<WeatherForecast> Get() yönlendirer. İşte bu nedenle önceki alıştırmada, isteklerin hava durumu sonuçlarının http://localhost:5000/weatherforecast döndürüldü olduğunu görmüştün. Bu modülün devamlarında öğreneceğiniz gibi, CRUD işlemlerini ( , , , ) gerçekleştiren bir web API'si ile ilişkilendirilmiş başka bazı yaygın eylemler vardır, ancak api denetleyicisinin bu örnekte olduğu gibi yalnızca bir denetleyici eylemi GET uygulaması PUT POST DELETE gerekir.
Bu durumda, döndürülen tam listesini alıyoruz WeatherForecast . GETİşlem aynı zamanda bir tanımlayıcıya geçirerek tek bir öğeyi almaya da olanak tanır. ASP.NET, bu, bir [HttpGet("{id}")] sonraki alıştırmada uygulayacağız öznitelikli ile elde edilebilir.
Artık bir Web API denetleyicisinin temel bileşenlerini öğrendiğinize göre, bir sonraki alıştırmada kendiniz oluşturmaya hazırsınız demektir PizzaController .
Bilginizi ölçün
Yardıma mı ihtiyacınız var? Sorun giderme kılavuzumuza gözatın veya sorun bildirerek belirli bir konuda geri bildiriminizi paylaşın.