Skip to content

v3.5.0

Choose a tag to compare

@ANcpLua ANcpLua released this 08 Feb 00:28
· 269 commits to main since this release

What's Changed

Bug Fix: Endpoints Invisible to OpenAPI/Swagger (#25)

All ErrorOrX-generated endpoints were invisible to ASP.NET Core's OpenAPI document generator — "paths": {} was empty despite endpoints working at runtime.

Root cause: The wrapper method Invoke_EpN(HttpContext ctx) returned Task, which matches the RequestDelegate signature (Func<HttpContext, Task>). ASP.NET Core's MapGet silently picked the RequestDelegate overload, bypassing RequestDelegateFactory — making endpoints invisible to OpenAPI.

Three-part fix:

Fix What Why
Typed return Wrapper returns Task<Results<Ok<T>, ...>> instead of Task Breaks RequestDelegate match, forces Delegate overload
(Delegate) cast Explicit cast on all MapGet/MapPost calls Safety net — forces Delegate overload regardless of signature
Explicit metadata Always emit ProducesResponseTypeMetadata Full response schemas in OpenAPI even without Results<...>

New: OpenAPI Parameter Definitions

When using AddErrorOrOpenApi(), the generated operation transformer now emits full OpenAPI parameter definitions for route, query, and header parameters — including types, formats, and required flags.

Two-tier support:

Setup What You Get
AddOpenApi() (existing) Endpoint visibility + response schemas
AddErrorOrOpenApi() Above + parameter definitions + XML doc summaries

Other Changes

  • Updated README examples from int id to Guid id with route constraints

Upgrade

dotnet add package ErrorOrX.Generators --version 3.5.0

For full OpenAPI parameter support, use AddErrorOrOpenApi() instead of AddOpenApi():

builder.Services
    .AddErrorOrOpenApi()        // instead of AddOpenApi()
    .AddErrorOrEndpoints()
    .UseJsonContext<AppJsonSerializerContext>();

Full Changelog: v3.4.0...v3.5.0