Skip to content

ApricotFramework.SelfDefinition.AspNetCore

NuGet CI License

Lets an ASP.NET Core service state facts about itself instead of inferring them from whatever request happens to arrive. Chiefly its external base address — the origin it is reached at from outside — so code building absolute links does not have to guess.

Install

dotnet add package ApricotFramework.SelfDefinition.AspNetCore

Usage

using ApricotFramework.SelfDefinition.AspNetCore.Extensions;

builder.Services.AddSelfDefinition(builder.Configuration);
{
  "SelfDefinition": {
    "ExternalBaseAddress": "https://api.example.com/gateway"
  }
}
using ApricotFramework.SelfDefinition.AspNetCore;

app.MapGet("/link", (ISelfDefinitionProvider selfDefinition) =>
{
    // Never ends in a slash, so one separator is always correct.
    var baseAddress = selfDefinition.GetExternalBaseAddress();

    return Results.Ok($"{baseAddress}/account/reset?token=abc123");
});

ExternalBaseAddress is required and validated when the host starts, so a missing or unusable value stops the host rather than producing wrong links later. Rejected: anything that is not an absolute http/https URL, embedded credentials, a query string, and a fragment. Note that a bare path such as /api is rejected too — it parses as an absolute file: URI, so it fails the scheme check rather than the absolute-URL one.

Full documentation: https://projectapricot.dev/docs/self-definition

About

Lets an ASP.NET Core service state its own external base address, validated at startup

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages