From 2dcf65d7dd29059b564c8b9b446cb8e816144171 Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Mon, 18 Mar 2024 01:16:13 +0100 Subject: [PATCH] Move [FromBody] back on base controllers, to prevent a breaking change --- .../Controllers/BaseJsonApiController.cs | 11 ++++++----- .../Controllers/BaseJsonApiOperationsController.cs | 2 +- .../Controllers/JsonApiController.cs | 10 +++++----- .../Controllers/JsonApiOperationsController.cs | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs b/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs index 5fee532b36..fb3cd2bd2d 100644 --- a/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs +++ b/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs @@ -185,7 +185,7 @@ public virtual async Task GetRelationshipAsync(TId id, string rel /// POST /articles HTTP/1.1 /// ]]> /// - public virtual async Task PostAsync(TResource resource, CancellationToken cancellationToken) + public virtual async Task PostAsync([FromBody] TResource resource, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -235,7 +235,7 @@ public virtual async Task PostAsync(TResource resource, Cancellat /// /// Propagates notification that request handling should be canceled. /// - public virtual async Task PostRelationshipAsync(TId id, string relationshipName, ISet rightResourceIds, + public virtual async Task PostRelationshipAsync(TId id, string relationshipName, [FromBody] ISet rightResourceIds, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new @@ -264,7 +264,7 @@ public virtual async Task PostRelationshipAsync(TId id, string re /// PATCH /articles/1 HTTP/1.1 /// ]]> /// - public virtual async Task PatchAsync(TId id, TResource resource, CancellationToken cancellationToken) + public virtual async Task PatchAsync(TId id, [FromBody] TResource resource, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -310,7 +310,8 @@ public virtual async Task PatchAsync(TId id, TResource resource, /// /// Propagates notification that request handling should be canceled. /// - public virtual async Task PatchRelationshipAsync(TId id, string relationshipName, object? rightValue, CancellationToken cancellationToken) + public virtual async Task PatchRelationshipAsync(TId id, string relationshipName, [FromBody] object? rightValue, + CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -370,7 +371,7 @@ public virtual async Task DeleteAsync(TId id, CancellationToken c /// /// Propagates notification that request handling should be canceled. /// - public virtual async Task DeleteRelationshipAsync(TId id, string relationshipName, ISet rightResourceIds, + public virtual async Task DeleteRelationshipAsync(TId id, string relationshipName, [FromBody] ISet rightResourceIds, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new diff --git a/src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs b/src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs index 1e7da80bd1..596b22794d 100644 --- a/src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs +++ b/src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs @@ -102,7 +102,7 @@ protected BaseJsonApiOperationsController(IJsonApiOptions options, IResourceGrap /// } /// ]]> /// - public virtual async Task PostOperationsAsync(IList operations, CancellationToken cancellationToken) + public virtual async Task PostOperationsAsync([FromBody] IList operations, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs index 0c56500797..b457dd5d99 100644 --- a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs +++ b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs @@ -73,7 +73,7 @@ public override Task GetRelationshipAsync([Required] TId id, [Req /// [HttpPost] - public override Task PostAsync([FromBody] [Required] TResource resource, CancellationToken cancellationToken) + public override Task PostAsync([Required] TResource resource, CancellationToken cancellationToken) { return base.PostAsync(resource, cancellationToken); } @@ -81,14 +81,14 @@ public override Task PostAsync([FromBody] [Required] TResource re /// [HttpPost("{id}/relationships/{relationshipName}")] public override Task PostRelationshipAsync([Required] TId id, [Required] string relationshipName, - [FromBody] [Required] ISet rightResourceIds, CancellationToken cancellationToken) + [Required] ISet rightResourceIds, CancellationToken cancellationToken) { return base.PostRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken); } /// [HttpPatch("{id}")] - public override Task PatchAsync([Required] TId id, [FromBody] [Required] TResource resource, CancellationToken cancellationToken) + public override Task PatchAsync([Required] TId id, [Required] TResource resource, CancellationToken cancellationToken) { return base.PatchAsync(id, resource, cancellationToken); } @@ -96,7 +96,7 @@ public override Task PatchAsync([Required] TId id, [FromBody] [Re /// [HttpPatch("{id}/relationships/{relationshipName}")] // Parameter `[Required] object? rightValue` makes Swashbuckle generate the OpenAPI request body as required. We don't actually validate ModelState, so it doesn't hurt. - public override Task PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [FromBody] [Required] object? rightValue, + public override Task PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [Required] object? rightValue, CancellationToken cancellationToken) { return base.PatchRelationshipAsync(id, relationshipName, rightValue, cancellationToken); @@ -112,7 +112,7 @@ public override Task DeleteAsync([Required] TId id, CancellationT /// [HttpDelete("{id}/relationships/{relationshipName}")] public override Task DeleteRelationshipAsync([Required] TId id, [Required] string relationshipName, - [FromBody] [Required] ISet rightResourceIds, CancellationToken cancellationToken) + [Required] ISet rightResourceIds, CancellationToken cancellationToken) { return base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken); } diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs index e2a0417ad2..9b5b747c22 100644 --- a/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs +++ b/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs @@ -18,7 +18,7 @@ public abstract class JsonApiOperationsController( { /// [HttpPost] - public override Task PostOperationsAsync([FromBody] [Required] IList operations, CancellationToken cancellationToken) + public override Task PostOperationsAsync([Required] IList operations, CancellationToken cancellationToken) { return base.PostOperationsAsync(operations, cancellationToken); }