MinimalApis.Extensions 0.5.2-pre.20220322.22

This is a prerelease version of MinimalApis.Extensions.
There is a newer version of this package available.
See the version list below for details.
dotnet add package MinimalApis.Extensions --version 0.5.2-pre.20220322.22                
NuGet\Install-Package MinimalApis.Extensions -Version 0.5.2-pre.20220322.22                
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="MinimalApis.Extensions" Version="0.5.2-pre.20220322.22" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MinimalApis.Extensions --version 0.5.2-pre.20220322.22                
#r "nuget: MinimalApis.Extensions, 0.5.2-pre.20220322.22"                
#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.
// Install MinimalApis.Extensions as a Cake Addin
#addin nuget:?package=MinimalApis.Extensions&version=0.5.2-pre.20220322.22&prerelease

// Install MinimalApis.Extensions as a Cake Tool
#tool nuget:?package=MinimalApis.Extensions&version=0.5.2-pre.20220322.22&prerelease                

MinimalApis.Extensions

A set of extensions and helpers that extend the funcationality of ASP.NET Core Minimal APIs.

Installation

Nuget

Prerelease Builds

This package is currently available in prerelease from nuget.org:

> dotnet add package MinimalApis.Extensions --prerelease

CI Builds

If you wish to use builds from this repo's main branch you can install them from this repo's package feed. See these instructions for further details about working with GitHub package feeds.

Getting Started

  1. Install the NuGet package into your ASP.NET Core project:
    > dotnet add package MinimalApis.Extensions --prerelease
    
  2. In your project's Program.cs, call the AddEndpointsProvidesMetadataApiExplorer() method on builder.Services to enable enhanced endpoint metadata in ApiExplorer:
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddEndpointsProvidesMetadataApiExplorer(); // <-- Add this line
    builder.Services.AddSwaggerGen();
    ...
    
  3. Update your Minimal APIs to use the helper binding and result types from this library, e.g.:
    app.MapPost("/todos", async Task<Results<ValidationProblem, Created<Todo>>> (Validated<Todo> input, TodoDb db) =>
    {
        if (!input.IsValid)
            return Results.Extensions.ValidationProblem(input.Errors);
    
        var todo = input.Value;
        db.Todos.Add(todo);
        await db.SaveChangesAsync();
    
        return Results.Extensions.Created($"/todos/{todo.Id}", todo);
    });
    

What's Included?

This library provides types that help extend the core functionality of ASP.NET Core Minimal APIs in the following ways:

  • Enhanced parameter binding
  • Typed IResult objects for easier unit testing (available via Results.Extensions)
  • Automatic population of detailed endpoint descriptions in Swagger/OpenAPI via the ability for input and result types to add to endpoint metadata via IProvideEndpointParameterMetadata and IProvideEndpointResponseMetadata
  • Union IResult return types via Results<TResult1, TResultN> that enable route handler delegates to declare all the possible IResult types they can return, enabling compile-time type checking and automatic population of possible responses in Swagger/OpenAPI

Sample Projects

TodoApis.Dapper

An example Todos application using ASP.NET Core Minimal APIs and the Dapper library for data storage in SQLite.

MinimalApis.Examples

Contains small examples for other types in this library.

MinimalApiPlayground

Shows many examples of using the types in this library along with other things related to ASP.NET Core Minimal APIs.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on MinimalApis.Extensions:

Package Downloads
VeoTech.Core.Api.Shared

Shared repo between repos in cloud team in Veo. No business logic, secrets or any other sensitive data in this repo only just shared functionality between repos and a few common test classes as well.

GitHub repositories (7)

Showing the top 5 popular GitHub repositories that depend on MinimalApis.Extensions:

Repository Stars
mehdihadeli/food-delivery-microservices
🍔 A practical and imaginary food delivery microservices, built with .Net 8, MassTransit, Domain-Driven Design, CQRS, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
DamianEdwards/MinimalApiPlayground
A place I'm trying out the new ASP.NET Core minimal APIs features.
mehdihadeli/food-delivery-modular-monolith
🌭 A practical and imaginary food and grocery delivery modular monolith, built with .Net 8, Domain-Driven Design, CQRS, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
andrewlock/asp-dot-net-core-in-action-3e
Source code examples for ASP.NET Core in Action, Third Edition
davidfowl/uController
A source generator for minimal APIs
Version Downloads Last updated
0.11.0 217,801 6/22/2023
0.10.1 30,730 12/21/2022
0.10.0 5,782 11/29/2022
0.9.1-pre.20221114.39 557 11/14/2022
0.9.0-pre.20221011.36 6,554 10/11/2022
0.8.0-pre.20220915.33 3,994 9/15/2022
0.7.2-pre.20220906.32 143 9/6/2022
0.7.1-pre.20220712.30 3,903 7/12/2022
0.7.0-pre.20220528.28 17,016 5/28/2022
0.6.0-pre.20220429.27 3,920 4/29/2022
0.5.2-pre.20220322.22 2,183 3/22/2022
0.5.1-pre.20220322.18 153 3/22/2022
0.5.0-pre.20220321.15 5,384 3/21/2022
0.4.1-pre.20211113.13 3,127 11/13/2021
0.4.0-pre.20211113.12 540 11/13/2021
0.3.1-pre.20211113.11 258 11/13/2021
0.3.1-pre.20211111.10 554 11/11/2021
0.3.0-pre.20211110.9 192 11/10/2021
0.1.0-pre.20211027.5 509 10/27/2021