EDK.PartialRequest
1.0.4
dotnet add package EDK.PartialRequest --version 1.0.4
NuGet\Install-Package EDK.PartialRequest -Version 1.0.4
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="EDK.PartialRequest" Version="1.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EDK.PartialRequest --version 1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EDK.PartialRequest, 1.0.4"
#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 EDK.PartialRequest as a Cake Addin #addin nuget:?package=EDK.PartialRequest&version=1.0.4 // Install EDK.PartialRequest as a Cake Tool #tool nuget:?package=EDK.PartialRequest&version=1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EDK.PartialRequest
EDK.PartialRequest is a .NET library designed to simplify patch requests in ASP.NET Core.
Usage
Define a request model that inherits from PartialRequest<T>
where T
is the type of the request model itself.
using EDK.PartialRequest;
public class ExampleRequest : PartialRequest<ExampleRequest>
{
public string? Field1 { get; set; }
public int? Field2 { get; set; }
public bool? Field3 { get; set; }
public object? Field4 { get; set; }
}
Make sure to include Newtonsoft as your json serializer in your Program.cs
or Startup.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddControllers().AddNewtonsoftJson();
In your controller, you can use this request model to check if properties are defined or not:
using Microsoft.AspNetCore.Mvc;
namespace EDK.PartialRequest.Example
{
[ApiController]
[Route("[controller]")]
public class ExampleController : ControllerBase
{
private readonly Dictionary<string, object?> _data = new()
{
{ "prop1", "original" },
{ "prop2", -1 },
{ "prop3", false },
{ "prop4", new { Name = "name" } }
};
[HttpPost("post")]
public object Post([FromBody] ExampleRequest request)
{
return new {
IsField1Defined = request.IsDefined(x => x.Field1),
DefinedProperties = request.GetDefinedProperties(),
};
}
[HttpPatch("patch")]
public object Patch([FromBody] ExampleRequest request)
{
var result = new Dictionary<string, object?>(_data);
if (request.IsDefined(x => x.Field1))
{
result["prop1"] = request.Field1;
}
if (request.IsDefined(x => x.Field2))
{
result["prop2"] = request.Field2;
}
if (request.IsDefined(x => x.Field3))
{
result["prop3"] = request.Field3;
}
if (request.IsDefined(x => x.Field4))
{
result["prop4"] = request.Field4;
}
return result;
}
}
}
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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. 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.0
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.