Atc.Rest 3.0.174

dotnet add package Atc.Rest --version 3.0.174
                    
NuGet\Install-Package Atc.Rest -Version 3.0.174
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Atc.Rest" Version="3.0.174" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Atc.Rest" Version="3.0.174" />
                    
Directory.Packages.props
<PackageReference Include="Atc.Rest" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Atc.Rest --version 3.0.174
                    
#r "nuget: Atc.Rest, 3.0.174"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Atc.Rest@3.0.174
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Atc.Rest&version=3.0.174
                    
Install as a Cake Addin
#tool nuget:?package=Atc.Rest&version=3.0.174
                    
Install as a Cake Tool

Atc.Rest

Target Framework: net9.0

Foundation library for building ASP.NET Core Web APIs with standardized configuration, middleware, and error handling. Provides a streamlined setup for REST APIs with built-in support for common scenarios like JSON serialization, exception handling, and service registration.

Why Use This Library?

Atc.Rest eliminates repetitive Web API configuration boilerplate and provides consistent, production-ready defaults for REST APIs. Instead of configuring the same middleware and services in every project, Atc.Rest provides:

  • Simplified Configuration: Single-line setup with RestApiOptions
  • Standardized Error Handling: ProblemDetails support with customizable exception filters
  • Automatic Service Registration: Convention-based service discovery and registration
  • JSON Serialization Defaults: Configurable casing styles, null handling, and enum serialization
  • Application Insights Integration: Built-in telemetry support
  • Development Tools: Anonymous access for debugging and detailed error messages

Perfect for:

  • Building REST APIs with consistent patterns
  • Microservices that need standardized configuration
  • APIs requiring ProblemDetails RFC compliance
  • Projects using Application Insights for monitoring

Installation

dotnet add package Atc.Rest

Target Framework

  • .NET 9.0

Key Features

  • Allow anonymous access in debug-mode
  • Enable ApplicationInsights telemetry
  • Auto service registration using reflection
  • Validation service registration
  • Enum-as-string serialization
  • Ignore null values in JSON responses
  • Configurable JSON casing styles (camelCase, PascalCase, etc.)
  • HttpContextAccessor registration
  • Exception handling with middleware
  • ProblemDetails RFC 7807 support
  • Detailed exception messages for debugging
  • HTTPS enforcement

Requirements

Key Dependencies

  • Microsoft.AspNetCore.App (framework reference)
  • Microsoft.ApplicationInsights.AspNetCore
  • Atc (foundation library)

Code documentation

References

References extended

services.AddRestApi and app.ConfigureRestApi examples

Using - minimal setup

Example with a minimal setup in the Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
        restApiOptions = new RestApiOptions
        restApiOptions.AddAssemblyPairs(
            Assembly.GetAssembly(typeof(ApiRegistration)),
            Assembly.GetAssembly(typeof(DomainRegistration)));
    }

    public IConfiguration Configuration { get; }

    private readonly RestApiOptions restApiOptions;

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRestApi<Startup>(restApiOptions);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.ConfigureRestApi(env, restApiOptions);
    }
}

Using - specified features setup

Example with specified features in the Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
        restApiOptions = new RestApiOptions
        {
            // Base
            AllowAnonymousAccessForDevelopment = true,
            UseApplicationInsights = true,
            UseAutoRegistrateServices = true,
            UseValidateServiceRegistrations = true,
            UseHttpContextAccessor = true,
            ErrorHandlingExceptionFilter = new RestApiOptionsErrorHandlingExceptionFilter
            {
                Enable = true,
                UseProblemDetailsAsResponseBody = true,
                IncludeExceptionDetails = true,
            },
            UseRequireHttpsPermanent = true,
            UseEnumAsStringInSerialization = true,
            UseJsonSerializerOptionsIgnoreNullValues = true,
            JsonSerializerCasingStyle = CasingStyle.CamelCase,
        };

        restApiOptions.AddAssemblyPairs(
            Assembly.GetAssembly(typeof(ApiRegistration)),
            Assembly.GetAssembly(typeof(DomainRegistration)));
    }

    public IConfiguration Configuration { get; }

    private readonly RestApiOptions restApiOptions;

    public void ConfigureServices(IServiceCollection services)
    {
        if (!restApiOptions.UseAutoRegistrateServices)
        {
            // Manual ConfigureServices
            services.ConfigureServices();
        }

        services.AddRestApi<Startup>(restApiOptions);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.ConfigureRestApi(env, restApiOptions);
    }
}

Contributing

Contributions are welcome! Please see the main repository README for contribution guidelines.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Atc.Rest:

Package Downloads
Atc.Rest.Extended

Atc.Rest.Extended is a collection of classes and extension methods for Atc.Rest, that contains SwaggerUI, FluentValidation Versioning etc.

Atc.Rest.FluentAssertions

Atc.Rest.FluentAssertions is a collection of assertion helpers for writing tests of Atc types.

Atc.Rest.AwesomeAssertions

Atc.Rest.AwesomeAssertions is a collection of assertion helpers for writing tests of Atc types.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.174 95 6/24/2026
3.0.173 95 6/24/2026
3.0.172 82 6/24/2026
3.0.67 1,627 4/25/2026
3.0.46 610 4/15/2026
3.0.45 556 4/10/2026
3.0.44 1,009 4/9/2026
3.0.43 142 4/9/2026
3.0.41 180 4/9/2026
3.0.40 173 4/9/2026
3.0.18 1,419 2/9/2026
3.0.16 2,979 12/15/2025
3.0.12 309 11/28/2025
3.0.9 702 11/21/2025
3.0.8 669 11/14/2025
3.0.4 2,108 11/6/2025
2.0.562 5,008 9/4/2025
2.0.561 365 9/4/2025
2.0.560 398 9/3/2025
2.0.558 508 8/22/2025
Loading failed