DataFilters.AspNetCore
0.3.0
See the version list below for details.
dotnet add package DataFilters.AspNetCore --version 0.3.0
NuGet\Install-Package DataFilters.AspNetCore -Version 0.3.0
<PackageReference Include="DataFilters.AspNetCore" Version="0.3.0" />
paket add DataFilters.AspNetCore --version 0.3.0
#r "nuget: DataFilters.AspNetCore, 0.3.0"
// Install DataFilters.AspNetCore as a Cake Addin #addin nuget:?package=DataFilters.AspNetCore&version=0.3.0 // Install DataFilters.AspNetCore as a Cake Tool #tool nuget:?package=DataFilters.AspNetCore&version=0.3.0
DataFilters.AspNetCore
Table of contents
- <a href='#why'>Why</a>
- <a href='#build-ifilters'>Make it easier to build
IFilter
instances</a> - <a href='#reduce-bandwith-usage'>Reduce bandwith usage</a>
- <a href='#custom-http-headers'>Custom HTTP headers</a>
- <a href='#prefer-http-header-support'>
Prefer
HTTP header support</a>
- <a href='#build-ifilters'>Make it easier to build
- <a href='#how-to-install'>How to install</a>
A small library that ease usage of DataFilters with ASP.NET Core APIs.
<a href="#" id="why">Why</a>
<a href="#" id="build-ifilters">Make it easier to build IFilter
instances</a>
DataFilters allows to build complex queries in a "restfull" way so However, it comes with some drawbacks.
In order to build a filter, you have to :
- parse the incoming string
- map it manually to an underlying model type.
- converts it into an IFilter instance using the
ToFilter<T>
extension method.
This can be a tedious task and this library can help to ease that process.
<a href="#" id="reduce-bandwith-usage">Reduce the bandwith usage</a>
The library can help reduce bandwith usage. This can be done in two differnet ways :
- using
x-datafilters-fields-include
/x-datafilters-fields-exclude
custom HTTP headers - using [
Prefer
] HTTP header, .
<a href="#" id="custom-http-headers"> Custom HTTP headers</a>
x-datafilters-fields-include
x-datafilters-fields-include
custom HTTP header allows to specified which properties that will be kept in the body response.
x-datafilters-fields-exclude
x-datafilters-fields-exclude
custom HTTP header allows to specify which properties that will be
dropped from the body response.
These custom headers can be handy for mobile clients that query a REST API by reducing the volume of data transfered from backend. This can also allow to design one API that can serve multiple clients : each client could "select" the properties it want to display.
<a href="#" id="prefer-http-header-support">Prefer
HTTP header support</a>
This library offers a limited support of the Prefer HTTP header.
Specifically, a client can request a "minimal" representation of the resource by setting the Prefer: return=minimal
HTTP header.
Given the following request
GET /api/users HTTP/1.1
Prefer: return=minimal
and the following C# class where the MinimalAttribute
is applied to both Name
and Id
properties :
public class Person
{
[Minimal]
public Guid Id { get; set; }
[Minimal]
public string Name { get; set; }
public string Email { get; set; }
}
the server can respond with a "minimal" representation of the resource.
HTTP/1.1 200 OK
<headers omitted for brevity>
[
{
"id": "83c39be2-5123-47bf-a1d1-9df15d146e6a",
"name": "John Doe"
},
{
"id": 2,
"name": "Jane Doe"
}
]
Only properties marked with the MinimalAttribute
are returned.
💡 <strong> Usage of the MinimalAttribute
automatically triggers support of the Prefer
HTTP header.</strong>
Improve performances
The library comes with a IDataFilterService
that can be used to build caches IFilter
instances created by the service.
<a href='#' id='how-to-install'>How to install</a>
- run
dotnet install DataFilters.AspNetCore
to add the package to your solution - add the following line to your Startup.cs file
public void ConfigureServices(IServiceCollection services)
{
services.AddDataFilterService(options =>
{
// configure DataFiltersOptions
});
}
This will add IDataFilterService
as a singleton to the dependency injection container.
- You can also opt in to use the custom HTTP headers by adding and instance of
SelectPropertiesActionFilterAttribute
services.Filters.Add(new SelectPropertyFilterAttribute());
This will then enable usage of x-datafilters-fields-include
and x-datafilters-fields-exclude
HTTP headers
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. 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. |
.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. |
-
.NETStandard 2.1
- DataFilters (>= 0.11.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.2.5)
- Microsoft.Extensions.Caching.Memory (>= 5.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
-
net5.0
- DataFilters (>= 0.11.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.2.5)
- Microsoft.Extensions.Caching.Memory (>= 5.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
-
net6.0
- DataFilters (>= 0.11.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.2.5)
- Microsoft.Extensions.Caching.Memory (>= 5.0.0)
- 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.
Version | Downloads | Last updated |
---|---|---|
0.4.0 | 2,913 | 8/17/2022 |
0.3.0 | 443 | 8/14/2022 |
0.2.0 | 571 | 3/29/2022 |
0.1.0 | 388 | 5/16/2021 |
0.1.0-beta0001 | 294 | 5/15/2021 |
• Added [MinimalAttribute](/src/DataFilters.AspNetCore/Attributes/MinimalAttribute.cs) to support Prefer: return=minimal HTTP header ([#47](https://github.com/candoumbe/DataFilters.AspNetCore/issues/47))
Full changelog at https://github.com/candoumbe/DataFilters.AspNetCore/blob/main/CHANGELOG.md