Skip to content
api-setup logo

api-setup

Configure affolterNET.Web.Api service registration and middleware pipeline. Use when setting up AddApiServices, ConfigureApiApp, or configuring the API middleware order.

SKILL.md

Full skill instructions

API Setup

Configure the affolterNET.Web.Api service registration and middleware pipeline.

For complete reference, see Library Guide.

Quick Start

// Program.cs
var builder = WebApplication.CreateBuilder(args);

// Step 1: Register services
var options = builder.Services.AddApiServices(
    builder.Environment.IsDevelopment(),
    builder.Configuration,
    opts => {
        opts.EnableSecurityHeaders = true;
        opts.ConfigureApi = api => {
            api.AuthMode = AuthenticationMode.Authorize;
        };
    });

var app = builder.Build();

// Step 2: Configure middleware
app.ConfigureApiApp(options);

app.Run();

Configuration Options

ApiAppOptions

PropertyTypeDescription
EnableSecurityHeadersboolEnable security headers middleware
ConfigureApiAction<ApiOptions>Configure API-specific options
ConfigureAfterRoutingCustomMiddlewareAction<IApplicationBuilder>Add custom middleware after routing
ConfigureBeforeEndpointsCustomMiddlewareAction<IApplicationBuilder>Add custom middleware before endpoints

ApiOptions

PropertyTypeDefaultDescription
AuthModeAuthenticationModeNoneAuthentication mode (None/​Authenticate/​Authorize)

Middleware Pipeline

The ConfigureApiApp configures middleware in this order:

  1. Security Headers Middleware
  2. Swagger/​OpenAPI
  3. Routing
  4. Custom Middleware (after routing hook)
  5. CORS
  6. Authentication & Authorization + RPT Middleware
  7. Custom Middleware (before endpoints hook)
  8. Endpoint Mapping (with Health Checks)

Common Patterns

Development vs Production

var options = builder.Services.AddApiServices(
    builder.Environment.IsDevelopment(),  // isDev flag
    builder.Configuration,
    opts => {
        // Development-specific config happens automatically
        // based on isDev flag
    });

Adding Custom Middleware

var options = builder.Services.AddApiServices(isDev, config, opts => {
    opts.ConfigureAfterRoutingCustomMiddleware = app => {
        app.UseMiddleware<RequestLoggingMiddleware>();
    };
    opts.ConfigureBeforeEndpointsCustomMiddleware = app => {
        app.UseMiddleware<TenantMiddleware>();
    };
});