У світі веб-розробки простота та ефективність мають велике значення. З випуском .NET 6 Microsoft представила Minimal APIs — спрощений спосіб створення легких HTTP-сервісів із мінімумом шаблонного коду. Цей новий підхід дозволяє розробникам швидко створювати веб-API з меншими зусиллями, що робить його привабливим варіантом для мікросервісів, прототипів та невеликих застосунків.
У цій статті ми розглянемо, що таке Minimal APIs, як вони працюють і чому варто використовувати їх у вашому наступному проекті.
Що таке Minimal APIs?
Minimal APIs — це функція .NET, яка спрощує процес створення HTTP API. На відміну від традиційних API на основі контролерів, які потребують контролерів, методів дій та додаткової конфігурації, Minimal APIs дозволяють визначати маршрути та обробники прямо в одному файлі, часто всього кількома рядками коду.
Цей підхід був натхненний такими фреймворками, як Express.js в екосистемі Node.js, де простота та мінімалізм є пріоритетами. Minimal APIs ідеально підходять для маленьких застосунків або сервісів, де не потрібна повна структура MVC (Model-View-Controller).
Як почати працювати з Minimal APIs
Щоб створити Minimal API, вам потрібно мати встановлений .NET 6 або новішу версію. Давайте розглянемо простий приклад.
Крок 1: Створіть новий проект
Відкрийте термінал або командний рядок і виконайте наступну команду для створення нового проекту Minimal API:
dotnet new web -o MyMinimalApi
cd MyMinimalApi
Ця команда створить новий веб-проект з файлом Program.cs
, який містить базову структуру Minimal API.
Крок 2: Визначте своє API
Відкрийте файл Program.cs
. Ви побачите простий приклад Minimal API:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Цей код виконує наступне:
- Створює екземпляр
WebApplication
. - Визначає один маршрут (
/
), який відповідає повідомленням "Hello World!". - Запускає застосунок.
Крок 3: Запустіть застосунок
Щоб запустити застосунок, використовуйте наступну команду:
dotnet run
Відкрийте браузер і перейдіть за адресою http://localhost:5000
. Ви побачите повідомлення "Hello World!".
Основні можливості Minimal APIs
1. Спрощений синтаксис
Minimal APIs зменшують кількість коду, необхідного для визначення маршрутів і обробників. Наприклад, ви можете визначити маршрут і його обробник в одному рядку:
app.MapGet("/api/hello", () => "Hello from the API!");
2. Вбудована залежність інжекції
Minimal APIs підтримують залежність інжекції з коробки. Ви можете інжектувати сервіси прямо в обробники маршрутів:
app.MapGet("/api/users", (UserService userService) => userService.GetAllUsers());
3. JSON серіалізація
Minimal APIs автоматично серіалізують об'єкти в JSON. Наприклад:
app.MapGet("/api/products", () => new { Name = "Laptop", Price = 1200 })
Це поверне JSON-відповідь:
{
"Name": "Laptop",
"Price": 1200
}
4. Параметри маршруту та прив'язка моделі
Легко визначати параметри маршруту та прив'язувати їх до своїх обробників:
app.MapGet("/api/users/{id}", (int id) => $"User ID: {id}");
Підтримка проміжного програмного забезпечення (Middleware)
Minimal APIs підтримують проміжне програмне забезпечення (middleware), що дозволяє додавати кросфункціональні аспекти, такі як логування, автентифікація та обробка помилок:
app.Use(async (context, next) =>
{
Console.WriteLine("Before handling request");
await next();
Console.WriteLine("After handling request");
});
```
Коли використовувати Minimal APIs
Minimal APIs — це чудовий вибір для:
- Мікросервісів: Легкі сервіси, які не потребують повної структури MVC.
- Прототипування: Швидке створення та тестування ідей.
- Малих застосунків: API з обмеженою кількістю точок доступу.
- Навчання: Початківці можуть зосередитись на основах HTTP API без складності контролерів.
Однак для більших застосунків з складною маршрутизацією, валідацією та бізнес-логікою традиційні API на основі контролерів можуть бути кращим вибором.
Приклад: Створення простого CRUD API
Створімо простий CRUD API для управління списком продуктів.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
var products = new List
{
new Product { Id = 1, Name = "Laptop", Price = 1200 },
new Product { Id = 2, Name = "Smartphone", Price = 800 }
};
app.MapGet("/api/products", () => products);
app.MapGet("/api/products/{id}", (int id) =>
products.FirstOrDefault(p => p.Id == id));
app.MapPost("/api/products", (Product product) =>
{
product.Id = products.Max(p => p.Id) + 1;
products.Add(product);
return Results.Created($"/api/products/{product.Id}", product);
});
app.MapPut("/api/products/{id}", (int id, Product updatedProduct) =>
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null) return Results.NotFound();
product.Name = updatedProduct.Name;
product.Price = updatedProduct.Price;
return Results.NoContent();
});
app.MapDelete("/api/products/{id}", (int id) =>
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null) return Results.NotFound();
products.Remove(product);
return Results.NoContent();
});
app.Run();
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Цей приклад демонструє, як створити базовий CRUD API, використовуючи Minimal APIs. Він включає маршрути для отримання, додавання, оновлення та видалення продуктів.
Висновок
Minimal APIs в .NET надають сучасний, легкий спосіб створення HTTP-сервісів з мінімумом шаблонного коду. Вони ідеально підходять для малих застосунків, мікросервісів та прототипування, пропонуючи простоту та гнучкість без жертв на користь функціональності.
Незалежно від того, чи ви досвідчений розробник .NET, чи тільки починаєте, Minimal APIs варто вивчити для вашого наступного проекту. Спробуйте їх і подивіться, як вони можуть спростити ваш процес розробки!
Перекладено з: Simplify and Scale: How .NET’s Minimal APIs Are Changing the Game for Web Developers