Pengontrol ASP.NET Core Web API

Selesai

Dalam latihan sebelumnya, Anda membuat aplikasi web yang menyediakan data prakiraan cuaca sampel, lalu berinteraksi dengannya di HTTP Read-Eval-Print Loop (REPL).

Sebelum Anda melanjutkan untuk menulis kelas PizzaController Anda sendiri, mari kita lihat kode dalam sampel WeatherController untuk memahami cara kerjanya. Dalam unit ini, Anda mempelajari cara WeatherController menggunakan ControllerBase kelas dasar dan beberapa atribut .NET untuk membangun API web fungsional dalam beberapa lusin baris kode. Setelah memahami konsep-konsep tersebut, Anda siap untuk menulis kelas Anda sendiri PizzaController .

Berikut adalah kode untuk seluruh kelas WeatherController. Jangan khawatir jika pemaparan di atas saat ini tidak terlihat masuk akal. Mari kita jalankan langkah demi langkah.

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

Kelas dasar: ControllerBase

Pengontrol adalah kelas publik dengan satu atau beberapa metode publik yang disebut sebagai tindakan. Berdasarkan konvensi, pengontrol ditempatkan di direktori Pengontrol akar proyek. Tindakan diekspos sebagai titik akhir HTTP melalui perutean. Jadi, permintaan GET ke https://localhost:{PORT}/weatherforecast menyebabkan metode Get() kelas WeatherForecastController dijalankan.

Hal pertama yang perlu diperhatikan adalah bahwa kelas ini mewarisi dari kelas dasar ControllerBase. Kelas dasar ini menyediakan banyak fungsionalitas standar untuk menangani permintaan HTTP, sehingga Anda dapat fokus pada logika bisnis tertentu untuk aplikasi Anda.

Catatan

Jika sebelumnya Anda pernah menggunakan Halaman Razor atau arsitektur model-view-controller (MVC) di ASP.NET Core, artinya Anda pernah menggunakan kelas Controller. Jangan membuat pengontrol API web yang berasal dari kelas Controller. Controller berasal dari ControllerBase dan menambahkan dukungan untuk tampilan, jadi ditujukan untuk menangani halaman web, bukan permintaan API web.

Atribut kelas pengontrol API

Dua atribut penting diterapkan ke WeatherForecastController, seperti yang ditunjukkan dalam kode berikut:

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

[ApiController] memungkinkan perilaku berpendapat yang akan memudahkan dalam membangun API web. Beberapa perilaku termasuk inferensi sumber parameter, perutean atribut sebagai persyaratan, dan peningkatan penanganankesalahan validasi model*.

[Route] mendefinisikan pola perutean [controller]. Nama pengontrol (tidak peka huruf besar/kecil, tanpa akhiran Pengontrol ) menggantikan [controller] token. Pengontrol ini menangani permintaan ke https://localhost:{PORT}/weatherforecast.

Catatan

Rute tersebut mungkin berisi string statik, seperti dalam api/[controller]. Dalam contoh ini, pengontrol ini akan menangani permintaan ke https://localhost:{PORT}/api/weatherforecast.

Memberikan hasil cuaca dengan metode Get()

WeatherForecastController meliputi tindakan satu pengontrol yang ditunjuk oleh atribut [HttpGet(Name = "GetWeatherForecast")]. Atribut ini merutekan permintaan GET ke metode public IEnumerable<WeatherForecast> Get(). Seperti yang Anda lihat di latihan sebelumnya, permintaan menyebabkan https://localhost:{PORT}/weatherforecast hasil cuaca dikembalikan.

Saat Anda mempelajarinya nanti dalam modul ini, tindakan umum lainnya dikaitkan dengan API web yang melakukan operasi CRUD (GET, , PUTPOST, DELETE). Tetapi, pengontrol API hanya perlu menerapkan satu tindakan pengontrol saja.

Dalam hal ini, Anda mendapatkan daftar WeatherForecast lengkap item yang dikembalikan. Operasi GET juga memungkinkan pengambilan satu item dengan meneruskan pengidentifikasi. Di ASP.NET, Anda dapat mengambil satu item dengan menggunakan [HttpGet("{id}")] atribut . Anda akan menerapkan atribut tersebut di latihan berikutnya.

Sekarang setelah Anda mengetahui komponen mendasar dari pengontrol API web, Anda siap untuk membuat kelas Anda sendiri PizzaController .

Uji pengetahuan Anda

1.

Apa fungsi atribut [ApiController]?