Immediate.Apis
0.4.0
See the version list below for details.
dotnet add package Immediate.Apis --version 0.4.0
NuGet\Install-Package Immediate.Apis -Version 0.4.0
<PackageReference Include="Immediate.Apis" Version="0.4.0" />
paket add Immediate.Apis --version 0.4.0
#r "nuget: Immediate.Apis, 0.4.0"
// Install Immediate.Apis as a Cake Addin #addin nuget:?package=Immediate.Apis&version=0.4.0 // Install Immediate.Apis as a Cake Tool #tool nuget:?package=Immediate.Apis&version=0.4.0
Immediate.Apis
Immediate.Apis is a source generator for minimal APIs, for
Immediate.Handlers
handlers. Simply add a [MapGet]
to the
[Handler]
class and an endpoint will automatically be added.
Examples
Installing Immediate.Apis
You can install Immediate.Apis with NuGet:
Install-Package Immediate.Apis
Or via the .NET Core command line interface:
dotnet add package Immediate.Apis
Either commands, from Package Manager Console or .NET Core CLI, will download and install Immediate.Handlers.
Using Immediate.Apis
Creating an Endpoint
Create a Handler and an endpoint by adding the following code:
[Handler]
[MapGet("/users")]
public static partial class GetUsersQuery
{
public record Query;
private static ValueTask<IEnumerable<User>> HandleAsync(
Query _,
UsersService usersService,
CancellationToken token)
{
return usersService.GetUsers();
}
}
Registering the endpoints
In your Program.cs
, add a call to app.MapXxxEndpoints()
, where Xxx
is the shortened form of the project name.
- For a project named
Web
, it will beapp.MapWebEndpoints()
- For a project named
Application.Web
, it will beapp.MapApplicationWebEndpoints()
Customizing the endpoints
Authorization
The [AllowAnonymous]
and [Authorized("Policy")]
attributes are supported and will be applied to the endpoint.
[Handler]
[MapGet("/users")]
[AllowAnonymous]
public static partial class GetUsersQuery
{
public record Query;
private static ValueTask<IEnumerable<User>> HandleAsync(
Query _,
UsersService usersService,
CancellationToken token)
{
return usersService.GetUsers();
}
}
Additional Customization
Additional customization of the endpoint registration can be done by adding a CustomizeEndpoint
method.
[Handler]
[MapGet("/users")]
[Authorize(Policies.UserManagement)]
public static partial class GetUsersQuery
{
internal static void CustomizeGetFeaturesEndpoint(IEndpointConventionBuilder endpoint)
=> endpoint
.Produces<IEnumerable<User>>(StatusCodes.Status200OK)
.ProducesValidationProblem()
.ProducesProblem(StatusCodes.Status500InternalServerError)
.WithTags(nameof(User));
public record Query;
private static ValueTask<IEnumerable<User>> HandleAsync(
Query _,
UsersService usersService,
CancellationToken token)
{
return usersService.GetUsers();
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- Immediate.Handlers (>= 1.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.