Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 10 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
ASP.NET Core menyediakan dua pendekatan untuk membangun API HTTP: API Minimal dan API berbasis pengontrol. Untuk proyek baru, sebaiknya gunakan API Minimal karena menyediakan pendekatan berkinerja tinggi yang disederhanakan untuk membangun API dengan kode dan konfigurasi minimal.
API Minimal - Direkomendasikan untuk proyek baru
API minimal adalah pendekatan yang direkomendasikan untuk membangun API HTTP cepat dengan ASP.NET Core. Ini memungkinkan Anda untuk membangun titik akhir yang REST berfungsi penuh dengan kode dan konfigurasi minimal. Lewati perancah tradisional dan hindari pengontrol yang tidak perlu dengan lancar mendeklarasikan rute dan tindakan API.
Berikut adalah contoh sederhana yang membuat API di akar aplikasi web:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
Sebagian besar API menerima parameter sebagai bagian dari rute:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/users/{userId}/books/{bookId}",
(int userId, int bookId) => $"The user id is {userId} and book id is {bookId}");
app.Run();
API minimal mendukung konfigurasi dan kustomisasi yang diperlukan untuk menskalakan ke beberapa API, menangani rute kompleks, menerapkan aturan otorisasi, dan mengontrol konten respons API.
Mulai menggunakan API Minimal
- Tutorial: Tutorial: Membuat API minimal dengan ASP.NET Core
- Referensi cepat: Referensi cepat API minimal
- Contoh: Untuk daftar lengkap skenario umum dengan contoh kode, lihat Referensi cepat API Minimal
API berbasis pengontrol - Pendekatan alternatif
ASP.NET Core juga mendukung pendekatan berbasis pengontrol di mana pengontrol adalah kelas yang berasal dari ControllerBase. Pendekatan ini mengikuti pola berorientasi objek tradisional dan mungkin lebih disukai untuk:
- Aplikasi besar dengan logika bisnis yang kompleks
- Teams terbiasa dengan pola MVC
- Aplikasi yang memerlukan fitur MVC tertentu
Berikut adalah kode sampel untuk API berdasarkan pengontrol:
namespace APIWithControllers;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
}
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.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 = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
Kode berikut menyediakan fungsionalitas yang sama menggunakan pendekatan API Minimal yang direkomendasikan:
namespace MinimalAPI;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", (HttpContext httpContext) =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
})
.ToArray();
return forecast;
});
app.Run();
}
}
Kedua proyek API merujuk ke kelas berikut:
namespace APIWithControllers;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
Memilih antara pendekatan
Mulailah dengan API Minimal untuk proyek baru. Mereka menawarkan:
- Sintaks yang lebih sederhana - Kode boilerplate lebih sedikit
- Performa yang lebih baik - Mengurangi overhead dibandingkan dengan pengontrol
- Pengujian yang lebih mudah - Pengujian integrasi dan unit yang disederhanakan
- Pendekatan modern - Memanfaatkan fitur .NET terbaru
Pertimbangkan API berbasis pengontrol jika Anda memerlukan:
- Ekstensibilitas pengikatan model (IModelBinderProvider, IModelBinder)
- Fitur validasi tingkat lanjut (IModelValidator)
- Bagian aplikasi atau model aplikasi
- Dukungan JsonPatch
- Dukungan OData
Sebagian besar fitur ini dapat diimplementasikan dalam API Minimal dengan solusi kustom, tetapi pengontrol menyediakannya di luar kotak.
Lihat juga
- Tutorial: Membuat API minimal dengan tutorial ASP.NET Core - Minimal API
- Referensi cepat API minimal - Referensi cepat API minimal
- Membuat API web dengan gambaran umum API berbasis ASP.NET Core - Controller
- Tutorial: Membuat API web berbasis pengontrol dengan tutorial API berbasis ASP.NET Core - Controller
ASP.NET Core menyediakan dua pendekatan untuk membangun API HTTP: API Minimal dan API berbasis pengontrol. Untuk proyek baru, sebaiknya gunakan API Minimal karena menyediakan pendekatan berkinerja tinggi yang disederhanakan untuk membangun API dengan kode dan konfigurasi minimal.
API Minimal - Direkomendasikan untuk proyek baru
API minimal adalah pendekatan yang direkomendasikan untuk membangun API HTTP cepat dengan ASP.NET Core. Ini memungkinkan Anda untuk membangun titik akhir yang REST berfungsi penuh dengan kode dan konfigurasi minimal.
Berikut adalah contoh sederhana:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
Mulai menggunakan API Minimal
- Tutorial: Tutorial: Membuat API minimal dengan ASP.NET Core
- Referensi cepat: Referensi cepat API minimal
API berbasis pengontrol - Pendekatan alternatif
Pengontrol adalah kelas yang berasal dari ControllerBase. Pendekatan ini mengikuti pola berorientasi objek tradisional.
Berikut adalah kode sampel untuk API berdasarkan pengontrol:
namespace APIWithControllers;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
}
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.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 = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
Kode berikut menyediakan fungsionalitas yang sama menggunakan pendekatan API Minimal yang direkomendasikan:
namespace MinimalAPI;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", (HttpContext httpContext) =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
})
.ToArray();
return forecast;
});
app.Run();
}
}
Kedua proyek API merujuk ke kelas berikut:
namespace APIWithControllers;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
Memilih antara pendekatan
Mulailah dengan API Minimal untuk proyek baru. Pertimbangkan API berbasis pengontrol jika Anda memerlukan:
- Ekstensibilitas pengikatan model (IModelBinderProvider, IModelBinder)
- Dukungan pengikatan formulir, termasuk IFormFile
- Fitur validasi tingkat lanjut (IModelValidator)
- Bagian aplikasi atau model aplikasi
- Dukungan JsonPatch
- Dukungan OData
Lihat juga
- Tutorial: Membuat API minimal dengan tutorial ASP.NET Core - Minimal API
- Referensi cepat API minimal - Referensi cepat API minimal
- Membuat API web dengan gambaran umum API berbasis ASP.NET Core - Controller
- Tutorial: Membuat API web berbasis pengontrol dengan tutorial API berbasis ASP.NET Core - Controller
ASP.NET Core