Simple.Hateoas
2.0.0
dotnet add package Simple.Hateoas --version 2.0.0
NuGet\Install-Package Simple.Hateoas -Version 2.0.0
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="Simple.Hateoas" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Simple.Hateoas --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Simple.Hateoas, 2.0.0"
#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 Simple.Hateoas as a Cake Addin #addin nuget:?package=Simple.Hateoas&version=2.0.0 // Install Simple.Hateoas as a Cake Tool #tool nuget:?package=Simple.Hateoas&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Simple.Hateoas
A simple implementation of HATEOAS for .NET Web API to apply semantic links in models returned from your API.
Using Instructions
See samples for more details about using: https://github.com/RonildoSouza/Simple.Hateoas/tree/master/samples
1 - Install Simple.Hateoas
dotnet add package Simple.Hateoas --version 2.0.0
2 - Register Simple.Hateoas
public class Startup
{
// ...
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSimpleHateoas();
}
// ...
}
OR (Minimal API)
/// Program.cs
// ...
builder.Services.AddSimpleHateoas();
// ...
3 - Create your Hateoas Link Builder class
using Simple.Hateoas.Models;
using YourProject.Dtos
namespace YourProject.HateoasLinkBuilders
{
public class EntityDtoHateoasLinkBuilder : IHateoasLinkBuilder<EntityDto>
{
private readonly IPermissionServiceMock _permissionServiceMock;
public EntityDtoHateoasLinkBuilder(IPermissionServiceMock permissionServiceMock)
{
_permissionServiceMock = permissionServiceMock;
}
public HateoasResult<EntityDto> AddLinks(HateoasResult<EntityDto> hateoasResult)
{
hateoasResult
.AddSelfLink("GetEntity", c => new { id = c.Id })
.AddLink("DeleteEntity", HttpMethod.Delete, c => new { id = c.Id }, _ => _permissionServiceMock.UserLoggedIsAdmin());
return hateoasResult;
}
}
}
4 - Create and return your Hateoas Result
using Microsoft.AspNetCore.Mvc;
using YourProject.Dtos;
using YourProject.HateoasLinkBuilders;
namespace YourProject.Controllers
{
[ApiController]
[Route("[controller]")]
public class EntitiesController : ControllerBase
{
private readonly IEntityAppServiceMock _entityAppServiceMock;
private readonly IHateoas _hateoas;
public EntitiesController(IHateoas hateoas, IEntityAppServiceMock entityAppServiceMock)
{
_hateoas = hateoas;
_entityAppServiceMock = entityAppServiceMock;
}
[HttpGet("{id}", Name = "GetEntity")]
[ProducesResponseType(typeof(HateoasResult<EntityDto>), (int)HttpStatusCode.OK)]
public IActionResult Get(Guid id)
{
var entityDto = _entityAppServiceMock.GetById(id);
var hateoasResult = _hateoas.Create(entityDto);
return Ok(hateoasResult);
}
[HttpDelete("{id}", Name = "DeleteEntity")]
[ProducesResponseType((int)HttpStatusCode.OK)]
public IActionResult Delete(Guid id)
{
_entityAppServiceMock.RemoveById(id);
return Ok();
}
}
}
OR (Minimal API)
app.MapGet("/{id}", (
[FromServices] IHateoas hateoas,
[FromServices] IEntityAppServiceMock entityAppServiceMock,
[FromRoute] Guid id) =>
{
var entityDto = entityAppServiceMock.GetById(id);
var hateoasResult = hateoas.Create(entityDto);
return Results.Ok(hateoasResult);
})
.WithName("GetEntity")
.Produces<HateoasResult<EntityDto>>(StatusCodes.Status200OK)
.WithOpenApi();
app.MapDelete("/{id}", (
[FromServices] IEntityAppServiceMock entityAppServiceMock,
[FromRoute] Guid id) =>
{
entityAppServiceMock.RemoveById(id);
return Results.Ok();
})
.WithName("DeleteEntity")
.Produces(StatusCodes.Status200OK)
.WithOpenApi();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- Microsoft.AspNetCore.Mvc.Core (>= 2.2.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.