In this article, we will discuss .NET Core Web API features and code examples. Key features of web API such as Dependency injection, API versioning, Globalization and Localization, Open API/Swagger Integration, Model Binding and Validation, Routing, Minimal APIs, Cross-Platform Support, Entity Framework Core Integration, etc.
Dependency injection
Built-in dependency injection (DI) provides native support for clean architecture and testability. In the below example, the MyService class is referred to use its methods, which means it's added with a dependency.
builder.Services.AddScoped<IMyService, MyService>();
app.MapGet("/data", (IMyService service) => service.GetData());
API Versioning
Version support is available in .NET Core. Built-in support is provided for API Versioning, and multiple versions are allowed.
builder.Services.AddApiVersioning(options =>{
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
});
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/products")]
public class ProductsV1Controller : ControllerBase {
[HttpGet]
public IActionResult Get() => Ok("Version 1");
}
Routing with Attributes
Attribute-based routing and easy mapping of HTTP methods (GET, POST, PUT, DELETE) to the action Controller.
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id) => Ok($"Product {id}");
}
Model Binding
Data annotation, automatic building of HTTP requests to objects, and built-in validations.
public class Product
{
[Required]
public string Name { get; set; }
}
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
return Ok(product);
}
Minimal API
Allowing a lightweight API useful for small applications and microservice APIs. It's introduced in .NET Core 6.0.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/Data", () => "Hi, Data from Minimal API!");
app.Run();
Open-API (Swagger)Integration
Using tools called Swashbuckle and NSwag for easy integration of auto-generated API documentation and UI testing
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.UseSwagger();
app.UseSwaggerUI();
Cross-Platform Support
Developing and deploying APIs in different environments like Windows, Linux, and macOS, including cloud platforms.
Entity Framework Core Integration
EF Core integration supports multiple database access, LINQ, and migrations.
public class AppDbContext : DbContext
{
public DbSet Products { get; set; }
}
builder.Services.AddDbContext(options =>
options.UseSqlServer("YourConnectionString"));