.NET Core  

.NET Core Web API Features with Code Examples

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"));