FunctionalDdd.Asp
2.0.0-alpha.62
See the version list below for details.
dotnet add package FunctionalDdd.Asp --version 2.0.0-alpha.62
NuGet\Install-Package FunctionalDdd.Asp -Version 2.0.0-alpha.62
<PackageReference Include="FunctionalDdd.Asp" Version="2.0.0-alpha.62" />
paket add FunctionalDdd.Asp --version 2.0.0-alpha.62
#r "nuget: FunctionalDdd.Asp, 2.0.0-alpha.62"
// Install FunctionalDdd.Asp as a Cake Addin #addin nuget:?package=FunctionalDdd.Asp&version=2.0.0-alpha.62&prerelease // Install FunctionalDdd.Asp as a Cake Tool #tool nuget:?package=FunctionalDdd.Asp&version=2.0.0-alpha.62&prerelease
ASP Extension
This library will help convert Error objects to ASP.NET Core ActionResult
MVC
ToActionResult
Use this method to convert Result
to OkObjectResult
or various failed results.
It supports pagination by passing three parameters to, from and length. Based on the values it will return PartialContent (206) or Okay(200) per RFC9110
Failed state is based on the Error
object.
The mapping is as follows
NotFoundError => (ActionResult<T>)controllerBase.NotFound(error),
ValidationError validation => ValidationErrors<T>(validation, controllerBase),
ConflictError => (ActionResult<T>)controllerBase.Conflict(error),
UnauthorizedError => (ActionResult<T>)controllerBase.Unauthorized(error),
ForbiddenError => (ActionResult<T>)controllerBase.StatusCode(StatusCodes.Status403Forbidden, error),
UnexpectedError => (ActionResult<TValue>)controllerBase.StatusCode(StatusCodes.Status500InternalServerError, error),
_ => (ActionResult<TValue>)controllerBase.StatusCode(StatusCodes.Status500InternalServerError, error),
MVC Example
Simple case.
[HttpPost("[action]")]
public ActionResult<User> Register([FromBody] RegisterRequest request) =>
FirstName.TryCreate(request.firstName)
.Combine(LastName.TryCreate(request.lastName))
.Combine(EmailAddress.TryCreate(request.email))
.Bind((firstName, lastName, email) => SampleWebApplication.User.TryCreate(firstName, lastName, email, request.password))
.ToActionResult(this);
To control the return type
[HttpPost("[action]")]
public ActionResult<User> RegisterCreated2([FromBody] RegisterRequest request) =>
FirstName.TryCreate(request.firstName)
.Combine(LastName.TryCreate(request.lastName))
.Combine(EmailAddress.TryCreate(request.email))
.Bind((firstName, lastName, email) => SampleWebApplication.User.TryCreate(firstName, lastName, email, request.password))
.Finally(
ok => CreatedAtAction("Get", new { name = ok.FirstName }, ok),
err => err.ToErrorActionResult<User>(this));
Minimal API
ToHttpResult
Use this method to convert Result
to Http.IResult
or various failed results.
Minimal API Example
Simple case.
userApi.MapPost("/register", (RegisterUserRequest request) =>
FirstName.TryCreate(request.firstName)
.Combine(LastName.TryCreate(request.lastName))
.Combine(EmailAddress.TryCreate(request.email))
.Bind((firstName, lastName, email) => User.TryCreate(firstName, lastName, email, request.password))
.ToHttpResult());
To control the return type
userApi.MapPost("/registerCreated", (RegisterUserRequest request) =>
FirstName.TryCreate(request.firstName)
.Combine(LastName.TryCreate(request.lastName))
.Combine(EmailAddress.TryCreate(request.email))
.Bind((firstName, lastName, email) => User.TryCreate(firstName, lastName, email, request.password))
.Map(user => new RegisterUserResponse(user.Id, user.FirstName, user.LastName, user.Email, user.Password))
.Finally(
ok => Results.CreatedAtRoute("GetUserById", new RouteValueDictionary { { "name", ok.firstName } }, ok),
err => err.ToErrorResult()));
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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- FunctionalDdd.RailwayOrientedProgramming (>= 2.0.0-alpha.62)
- Microsoft.Extensions.DependencyModel (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.1 | 65 | 1/23/2025 |
2.0.0-alpha.62 | 16 | 1/8/2025 |
2.0.0-alpha.61 | 35 | 1/7/2025 |
2.0.0-alpha.60 | 62 | 12/7/2024 |
2.0.0-alpha.55 | 56 | 11/22/2024 |
2.0.0-alpha.52 | 62 | 11/7/2024 |
2.0.0-alpha.48 | 56 | 11/2/2024 |
2.0.0-alpha.47 | 54 | 10/30/2024 |
2.0.0-alpha.44 | 113 | 10/18/2024 |
2.0.0-alpha.42 | 62 | 10/14/2024 |
2.0.0-alpha.39 | 85 | 6/27/2024 |
2.0.0-alpha.38 | 82 | 4/24/2024 |
2.0.0-alpha.33 | 70 | 4/17/2024 |
2.0.0-alpha.26 | 94 | 4/9/2024 |
2.0.0-alpha.21 | 91 | 4/1/2024 |
2.0.0-alpha.19 | 74 | 3/5/2024 |
2.0.0-alpha.18 | 73 | 2/28/2024 |
2.0.0-alpha.17 | 67 | 2/26/2024 |
2.0.0-alpha.15 | 98 | 1/30/2024 |
2.0.0-alpha.8 | 74 | 1/27/2024 |
2.0.0-alpha.6 | 111 | 1/5/2024 |
1.1.1 | 600 | 11/15/2023 |
1.1.0-alpha.32 | 127 | 11/2/2023 |
1.1.0-alpha.30 | 219 | 10/31/2023 |
1.1.0-alpha.28 | 97 | 10/28/2023 |
1.1.0-alpha.27 | 91 | 10/28/2023 |
1.1.0-alpha.24 | 93 | 10/20/2023 |
1.1.0-alpha.23 | 92 | 10/13/2023 |
1.1.0-alpha.22 | 94 | 10/13/2023 |
1.1.0-alpha.21 | 110 | 10/1/2023 |
1.1.0-alpha.20 | 96 | 9/30/2023 |
1.1.0-alpha.19 | 108 | 9/30/2023 |
1.1.0-alpha.18 | 103 | 9/29/2023 |
1.1.0-alpha.17 | 90 | 9/22/2023 |
1.1.0-alpha.13 | 95 | 9/16/2023 |
1.1.0-alpha.4 | 138 | 6/9/2023 |
1.1.0-alpha.3 | 86 | 6/8/2023 |
1.0.1 | 618 | 5/12/2023 |
0.1.0-alpha.40 | 130 | 4/6/2023 |
0.1.0-alpha.39 | 122 | 4/3/2023 |
0.1.0-alpha.38 | 161 | 4/2/2023 |
0.1.0-alpha.37 | 132 | 3/31/2023 |
0.1.0-alpha.35 | 130 | 3/29/2023 |
0.1.0-alpha.34 | 112 | 3/28/2023 |
0.1.0-alpha.32 | 150 | 3/18/2023 |
0.1.0-alpha.30 | 139 | 3/11/2023 |
0.1.0-alpha.27 | 147 | 3/7/2023 |
0.1.0-alpha.24 | 144 | 2/15/2023 |
0.1.0-alpha.22 | 133 | 2/15/2023 |
0.1.0-alpha.20 | 141 | 2/13/2023 |
0.1.0-alpha.19 | 97 | 2/13/2023 |
0.0.1-alpha.14 | 156 | 1/4/2023 |
0.0.1-alpha.4 | 138 | 12/30/2022 |
0.0.1-alpha.3 | 155 | 12/23/2022 |
0.0.1-alpha | 565 | 12/21/2022 |