VHal.AspNetCore provides ASP.NET Core extensions for implementing Hypertext Application Language (HAL) in web APIs. It includes: - ASP.NET Core Integration for creating HAL resources. - Request Handling within the HAL framework. - Resource Link Management for collections and individual resources.
$ dotnet add package VHal.AspNetCoreVHal.AspNetCore provides ASP.NET Core extensions for implementing Hypertext Application Language (HAL) in web APIs. This package integrates seamlessly with Hal.Core to offer a comprehensive solution for HAL-compliant API development.
Install the package via NuGet:
dotnet add package VHal.AspNetCore
Here's how to use VHal.AspNetCore in your ASP.NET Core application:
using VHal.AspNetCore;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILinkGenerator linkGenerator;
public WeatherForecastController(ILinkGenerator linkGenerator)
{
this.linkGenerator = linkGenerator;
}
[HttpGet]
public IActionResult GetWeatherForecast()
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
var response = new ResourceCollectionBuilder<WeatherForecast, string>(forecast, "meta")
.AddLink(linkBuilder =>
linkBuilder
.SetRel("self")
.SetMethod(HttpVerbs.Get)
.SetHref(linkGenerator.GenerateUri("GetWeatherForecastWithMeta", new { }))
.Build())
.AddLink(linkBuilder =>
linkBuilder
.SetRel("all")
.SetMethod(HttpVerbs.Get)
.SetHref(linkGenerator.GenerateUri("GetWeatherForecast", new { }))
.Build())
.Build();
return Ok(response);
}
[HttpGet("{id}")]
public IActionResult GetWeatherForecastById(int id)
{
var item = new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(id)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
);
var response = new ResourceBuilder<WeatherForecast>(item)
.AddLink("self", linkGenerator.GenerateUri("GetLowest", new { }), HttpVerbs.Get)
.AddLink("all", linkGenerator.GenerateUri("GetWeatherForecast", new { }), HttpVerbs.Get)
.Build();
return Ok(response);
}
}
This project is licensed under the MIT License.