Minimal APIs: Fast, Lean, and Powerful in ASP.NET Core


Sometimes you don’t need the full MVC setup — you just want to expose a few endpoints quickly and cleanly. That’s where Minimal APIs shine in ASP.NET Core.
In this post, we’ll explore how to create Minimal APIs that are fast, lean, and production-ready.
🚀 What Are Minimal APIs?
Minimal APIs allow you to define endpoints without controllers or attributes. You write route handlers directly in Program.cs
using clean, expressive syntax.
Perfect for:
- Microservices
- Internal tools
- Prototypes
- Lightweight APIs
🛠️ Creating a Minimal API Project
dotnet new web -n MinimalApiDemo
cd MinimalApiDemo
dotnet run
This template has no controllers — just a single Program.cs
.
🧱 Basic Example
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.MapGet("/api/products", () =>
{
var products = new[] {
new { Id = 1, Name = "Apple" },
new { Id = 2, Name = "Orange" }
};
return Results.Ok(products);
});
app.Run();
✅ No controller classes. Just functions.
📦 Dependency Injection Still Works
app.MapGet("/config", (IConfiguration config) =>
{
var appName = config["AppName"];
return Results.Ok(new { appName });
});
You can inject any service registered in the DI container.
🔐 Add Authentication & Authorization
app.MapGet("/secure", [Authorize] () => "Secure data");
Minimal APIs fully support [Authorize]
, Swagger
, CORS, and all major ASP.NET Core features.
🧩 Grouping Routes (Optional)
For better structure, group endpoints:
var products = app.MapGroup("/api/products");
products.MapGet("/", GetAllProducts);
products.MapPost("/", CreateProduct);
🧪 Swagger for Minimal APIs
Add these in Program.cs
:
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.UseSwagger();
app.UseSwaggerUI();
It works just like regular APIs!
⚠️ When Not to Use Minimal APIs
- When your app grows and needs organized controllers/services
- When using lots of filters or custom attributes
- When you want a strong separation of concerns
Minimal APIs are great, but don't replace MVC entirely.
✅ Up Next
Next: background tasks and scheduled jobs using IHostedService
and Hangfire.
➡️ Background Tasks & Hosted Services →
Small APIs. Big power. Let’s go! 🔥
Subscribe to my newsletter
Read articles from Esanju Babatunde directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
