Headless.Api.Mvc
0.4.15
dotnet add package Headless.Api.Mvc --version 0.4.15
NuGet\Install-Package Headless.Api.Mvc -Version 0.4.15
<PackageReference Include="Headless.Api.Mvc" Version="0.4.15" />
<PackageVersion Include="Headless.Api.Mvc" Version="0.4.15" />
<PackageReference Include="Headless.Api.Mvc" />
paket add Headless.Api.Mvc --version 0.4.15
#r "nuget: Headless.Api.Mvc, 0.4.15"
#:package Headless.Api.Mvc@0.4.15
#addin nuget:?package=Headless.Api.Mvc&version=0.4.15
#tool nuget:?package=Headless.Api.Mvc&version=0.4.15
Headless.Api.Mvc
Framework integration for ASP.NET Core MVC/Web API with controllers, filters, JSON configuration, and common utilities.
Problem Solved
Provides consistent MVC configuration, base controllers, and URL canonicalization for traditional controller-based APIs. Exception-to-ProblemDetails mapping is handled globally by Headless.Api's HeadlessApiExceptionHandler (registered via AddHeadlessProblemDetails()), so MVC actions get the same response shape as Minimal-API endpoints.
Key Features
ApiControllerBase- Base controller with common utilities- Environment-based action filters (
BlockInEnvironmentAttribute,RequireEnvironmentAttribute) - URL canonicalization middleware (
RedirectToCanonicalUrlRule) - Pre-configured JSON and MVC options
- API versioning integration with API Explorer
Installation
dotnet add package Headless.Api.Mvc
Quick Start
var builder = WebApplication.CreateBuilder(args);
builder.AddHeadless().ConfigureMvc();
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
Controller Example
[ApiController]
[Route("api/[controller]")]
public sealed class OrdersController : ApiControllerBase
{
[HttpGet("{id:int}")]
public async Task<IActionResult> GetAsync(int id, CancellationToken ct)
{
var order = await _service.GetAsync(id, ct).ConfigureAwait(false);
return order is null ? NotFound() : Ok(order);
}
}
Configuration
No additional configuration beyond what AddHeadless() requires. Configure Headless:StringEncryption and Headless:StringHash.
Dependencies
Headless.Api.CoreAsp.Versioning.MvcAsp.Versioning.Mvc.ApiExplorerMicrosoft.EntityFrameworkCore
Side Effects
- Configures
MvcOptionsandJsonOptionsfor controllers
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Asp.Versioning.Abstractions (>= 10.0.0)
- Asp.Versioning.Http (>= 10.0.0)
- Asp.Versioning.Mvc (>= 10.0.0)
- Asp.Versioning.Mvc.ApiExplorer (>= 10.0.0)
- CommunityToolkit.HighPerformance (>= 8.4.2)
- DeviceDetector.NET (>= 6.5.0)
- FileSignatures (>= 7.2.0)
- FluentValidation (>= 12.1.1)
- FluentValidation.DependencyInjectionExtensions (>= 12.1.1)
- Headless.Api.Core (>= 0.4.15)
- Humanizer.Core (>= 3.0.10)
- IdGen (>= 3.0.7)
- JetBrains.Annotations (>= 2025.2.4)
- libphonenumber-csharp (>= 9.0.30)
- Mediator.Abstractions (>= 3.0.2)
- Microsoft.AspNetCore.MiddlewareAnalysis (>= 10.0.8)
- Microsoft.Bcl.TimeProvider (>= 10.0.8)
- Microsoft.EntityFrameworkCore (>= 10.0.8)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Caching.Memory (>= 10.0.8)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.8)
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- Microsoft.Extensions.DiagnosticAdapter (>= 3.1.32)
- Microsoft.Extensions.Hosting (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Http.Resilience (>= 10.6.0)
- Microsoft.Extensions.Logging (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Logging.Console (>= 10.0.8)
- Microsoft.Extensions.ObjectPool (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.8)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.8)
- Microsoft.Extensions.Telemetry.Abstractions (>= 10.6.0)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- morelinq (>= 4.4.0)
- NetEscapades.AspNetCore.SecurityHeaders (>= 1.3.1)
- Nito.AsyncEx (>= 5.1.2)
- Nito.Disposables (>= 2.5.0)
- OpenMcdf (>= 3.1.3)
- Polly.Core (>= 8.6.6)
- Polly.Extensions (>= 8.6.4)
- Polly.RateLimiting (>= 8.6.4)
- Scrutor (>= 7.0.0)
- Snappier (>= 1.3.1)
- System.Reactive (>= 6.1.0)
- TimeZoneConverter (>= 7.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.