ASP.NET Core Řadiče webového rozhraní API

Dokončeno

V předchozím cvičení jsme vytvořili webovou aplikaci, která poskytuje ukázková data předpovědi počasí a pak s ní bude v HTTP REPL pracovat.

Předtím, než se podrobněeme k psaní naší PizzaController , Podívejme se na kód v ukázce, abychom WeatherController pochopili, jak funguje. V této části se dozvíte, jak WeatherController používá ControllerBase základní třídu a několik atributů .NET k sestavení funkčního webového rozhraní API v několika desítkových řádcích kódu. Jakmile rozumíte těmto koncepcím, budeme připraveni napsat vlastní PizzaController .

Prozkoumání WeatherForecastController

Zde je kód pro celou WeatherController třídu. Nedělejte si starosti, pokud to ještě nedává smysl, projdeme ho krok za krokem.

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();
        }
    }
}

Základní třída: ControllerBase

Kontroler je veřejná třída s jednou nebo více veřejnými metodami, které se označují jako akce. Podle konvence je řadič umístěn v adresáři řadičů kořenu projektu. Akce se zveřejňují jako koncové body HTTP přes směrování, takže požadavek HTTP GET http://localhost:5000/weatherforecast způsobí, že se Get() Metoda WeatherForecastController třídy spustí.

První věc, kterou je třeba si všimnout, je, že tato třída dědí ze základní třídy ControllerBase . Tato základní třída poskytuje spoustu standardních funkcí pro zpracování požadavků HTTP, takže se můžete soustředit na konkrétní obchodní logiku pro vaši aplikaci.

Poznámka

pokud máte zkušenosti s vývojem Razor Pages nebo MVC v ASP.NET Core, používali jste kontroler. Nevytvářejte kontroler webového rozhraní API odvozením z třídy Controller . Kontroler se odvozuje z ControllerBase a přidává podporu pro zobrazení, takže se dá zpracovávat webové stránky, ne požadavky na webové rozhraní API.

Atributy třídy řadiče API

Na WeatherForecastController se vztahují dva důležité atributy, jak je znázorněno níže.

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

[ApiController] umožňuje dogmatickým chování , které usnadňuje vytváření webových rozhraní API. Mezi chování patří například blokování zdroje parametru, směrování atributu jako požadavku a vylepšení zpracování chyb ověřování modelů.

[Route] definuje vzor směrování [controller]. [controller]Token se nahradí názvem kontroleru (bez rozlišování malých a velkých písmen, bez přípony kontroleru ). Požadavky na http://localhost:5000/weatherforecast jsou zpracovávány tímto řadičem.

Poznámka

Trasa může obsahovat statické řetězce jako v api/[controller]. V tomto příkladu se požadavek na http://localhost:5000/api/weatherforecast Tento kontroler zpracuje.

Poskytování výsledků počasí pomocí Get() metody

WeatherForecastController zahrnuje jednu akci kontroleru, kterou určí [HttpGet] atribut. Tento atribut směruje požadavky HTTP GET na public IEnumerable<WeatherForecast> Get() metodu. To je důvod, proč v předchozím cvičení jste viděli, že žádosti o http://localhost:5000/weatherforecast výsledky počasí mají být vráceny. Jak se později naučíte v tomto modulu, existují některé další běžné akce spojené s webovým rozhraním API, které provádí operace CRUD ( GET ,, PUT POST , DELETE ), ale řadič rozhraní API potřebuje implementovat jednu akci kontroleru, jak je vidět v tomto příkladu.

V tomto případě dostáváme úplný seznam WeatherForecast vrácených položek. Operace GET také umožňuje načtení jedné položky předáním identifikátoru. V ASP.NET toho lze dosáhnout pomocí [HttpGet("{id}")] atributu , který budeme implementovat v dalším cvičení.

Teď, když jste se naučili základní komponenty kontroleru webového rozhraní API, jste připraveni vytvořit vlastní v PizzaController dalším cvičení.

Kontrola znalostí

1.

Jaký je účel [ApiController] atributu?