Pengontrol ASP.NET Core Web API
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
, , PUT
POST
, 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
.