AgentSkillsCN

api-setup

配置affolterNET.Web.Api服务注册和中间件管道。在设置AddApiServices、ConfigureApiApp或配置API中间件顺序时使用此方法。

SKILL.md
--- frontmatter
name: api-setup
description: Configure affolterNET.Web.Api service registration and middleware pipeline. Use when setting up AddApiServices, ConfigureApiApp, or configuring the API middleware order.

API Setup

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

For complete reference, see Library Guide.

Quick Start

csharp
// 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

csharp
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

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