ASP.NET Core Web API-vezérlők
- 4 perc
Az előző gyakorlatban létrehozott egy webalkalmazást, amely időjárás-előrejelzési mintaadatokat biztosít, majd a HTTP Read-Eval-Print Loopban (REPL) használja azokat.
Mielőtt belevág a saját PizzaController osztály írásába, nézzük meg a mintában szereplő kódot, WeatherController hogy megtudjuk, hogyan működik. Ebben a leckében megtudhatja, hogyan WeatherController használható az ControllerBase alaposztály és néhány .NET-attribútum egy funkcionális webes API néhány tucat sornyi kódban való létrehozásához. Miután megismerte ezeket a fogalmakat, készen áll arra, hogy saját PizzaController osztályt írjon.
Itt látható az egész WeatherController osztály kódja. Ne aggódj, ha még nincs értelme. Haladjunk végig lépésről lépésre.
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();
}
}
Az alaposztály: ControllerBase
A vezérlő egy nyilvános osztály, amely egy vagy több, úgynevezett műveletként ismert nyilvános metódussal rendelkezik. Konvenció szerint a rendszer egy vezérlőt helyez el a projekt gyökérkönyvtárában. A műveletek http-végpontként jelennek meg útválasztással. Ezért egy HTTP-kérés GEThttps://localhost:{PORT}/weatherforecast az osztály metódusának Get() végrehajtását okozzaWeatherForecastController.
Az első dolog, amit észre kell venni, hogy ez az osztály örökli az ControllerBase alaposztályt. Ez az alaposztály sok általános funkciót biztosít a HTTP-kérések kezeléséhez, így az alkalmazás adott üzleti logikájára összpontosíthat.
Feljegyzés
Ha tapasztalata van a Razor Pages vagy a modellnézet-vezérlő (MVC) architektúrájának fejlesztésében ASP.NET Core-ban, akkor az osztályt Controller használta. Ne hozzon létre webes API-vezérlőt az Controller osztályból való származtatással.
Controller a nézetekből származik ControllerBase , és támogatást ad hozzá, így a weblapok kezelésére, nem a webes API-kérésekre.
API-vezérlő osztályattribútumai
Két fontos attribútumot alkalmazunk a WeatherForecastControllerkövetkező kódban látható módon:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
[ApiController] lehetővé teszi a véleményezett viselkedéseket , amelyek megkönnyítik a webes API-k létrehozását. Bizonyos viselkedések közé tartozik a paraméterforrás-következtetés, az attribútum-útválasztás követelményként, valamint a modellérvényesítési hibakezelésifejlesztések*.
[Route]: az [controller] útválasztási mintát definiálja. A jogkivonatot a vezérlő neve (a kis- és nagybetűk megkülönböztetése a Vezérlő utótag nélkül) helyettesíti [controller] . Ez a vezérlő kezeli a kéréseket.https://localhost:{PORT}/weatherforecast
Feljegyzés
Az útvonal statikus sztringeket tartalmazhat, ahogyan a .api/[controller] Ebben a példában ez a vezérlő a következő https://localhost:{PORT}/api/weatherforecastkérést kezeli: .
Időjárási eredmények biztosítása a Get() módszerrel
WeatherForecastController egyetlen vezérlőműveletet tartalmaz, amelyet az [HttpGet(Name = "GetWeatherForecast")] attribútum jelöl ki. Ez az attribútum a HTTP-kéréseket GET a public IEnumerable<WeatherForecast> Get() metódushoz irányítja. Ahogy az előző gyakorlatban is láthatta, az időjárási eredmények visszaadására https://localhost:{PORT}/weatherforecast irányuló kérések.
Ahogy a modul későbbi részében megismerheti, más gyakori műveletek is a CRUD-műveleteket (GET, , PUT, POSTDELETE) végrehajtó webes API-hoz vannak társítva. Az API-vezérlőknek azonban csak egy vezérlőműveletet kell implementálniuk.
Ebben az esetben a visszaadott elemek teljes listáját WeatherForecast kapja meg. A GET művelet lehetővé teszi egyetlen elem beolvasását is egy azonosító átadásával. A ASP.NET egyetlen elemet is lekérhet az [HttpGet("{id}")] attribútum használatával. Ezt az attribútumot a következő gyakorlatban fogja implementálni.
Most, hogy megismerte a webes API-vezérlő alapvető összetevőit, készen áll saját PizzaController osztály létrehozására.