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<IActionResult> GetRelationshipAsync(TId id, string rel /// POST /articles HTTP/1.1 /// ]]></code> /// </summary> - public virtual async Task<IActionResult> PostAsync(TResource resource, CancellationToken cancellationToken) + public virtual async Task<IActionResult> PostAsync([FromBody] TResource resource, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -235,7 +235,7 @@ public virtual async Task<IActionResult> PostAsync(TResource resource, Cancellat /// <param name="cancellationToken"> /// Propagates notification that request handling should be canceled. /// </param> - public virtual async Task<IActionResult> PostRelationshipAsync(TId id, string relationshipName, ISet<IIdentifiable> rightResourceIds, + public virtual async Task<IActionResult> PostRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new @@ -264,7 +264,7 @@ public virtual async Task<IActionResult> PostRelationshipAsync(TId id, string re /// PATCH /articles/1 HTTP/1.1 /// ]]></code> /// </summary> - public virtual async Task<IActionResult> PatchAsync(TId id, TResource resource, CancellationToken cancellationToken) + public virtual async Task<IActionResult> PatchAsync(TId id, [FromBody] TResource resource, CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -310,7 +310,8 @@ public virtual async Task<IActionResult> PatchAsync(TId id, TResource resource, /// <param name="cancellationToken"> /// Propagates notification that request handling should be canceled. /// </param> - public virtual async Task<IActionResult> PatchRelationshipAsync(TId id, string relationshipName, object? rightValue, CancellationToken cancellationToken) + public virtual async Task<IActionResult> PatchRelationshipAsync(TId id, string relationshipName, [FromBody] object? rightValue, + CancellationToken cancellationToken) { _traceWriter.LogMethodStart(new { @@ -370,7 +371,7 @@ public virtual async Task<IActionResult> DeleteAsync(TId id, CancellationToken c /// <param name="cancellationToken"> /// Propagates notification that request handling should be canceled. /// </param> - public virtual async Task<IActionResult> DeleteRelationshipAsync(TId id, string relationshipName, ISet<IIdentifiable> rightResourceIds, + public virtual async Task<IActionResult> DeleteRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> 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 /// } /// ]]></code> /// </example> - public virtual async Task<IActionResult> PostOperationsAsync(IList<OperationContainer> operations, CancellationToken cancellationToken) + public virtual async Task<IActionResult> PostOperationsAsync([FromBody] IList<OperationContainer> 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<IActionResult> GetRelationshipAsync([Required] TId id, [Req /// <inheritdoc /> [HttpPost] - public override Task<IActionResult> PostAsync([FromBody] [Required] TResource resource, CancellationToken cancellationToken) + public override Task<IActionResult> PostAsync([Required] TResource resource, CancellationToken cancellationToken) { return base.PostAsync(resource, cancellationToken); } @@ -81,14 +81,14 @@ public override Task<IActionResult> PostAsync([FromBody] [Required] TResource re /// <inheritdoc /> [HttpPost("{id}/relationships/{relationshipName}")] public override Task<IActionResult> PostRelationshipAsync([Required] TId id, [Required] string relationshipName, - [FromBody] [Required] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken) + [Required] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken) { return base.PostRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken); } /// <inheritdoc /> [HttpPatch("{id}")] - public override Task<IActionResult> PatchAsync([Required] TId id, [FromBody] [Required] TResource resource, CancellationToken cancellationToken) + public override Task<IActionResult> PatchAsync([Required] TId id, [Required] TResource resource, CancellationToken cancellationToken) { return base.PatchAsync(id, resource, cancellationToken); } @@ -96,7 +96,7 @@ public override Task<IActionResult> PatchAsync([Required] TId id, [FromBody] [Re /// <inheritdoc /> [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<IActionResult> PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [FromBody] [Required] object? rightValue, + public override Task<IActionResult> 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<IActionResult> DeleteAsync([Required] TId id, CancellationT /// <inheritdoc /> [HttpDelete("{id}/relationships/{relationshipName}")] public override Task<IActionResult> DeleteRelationshipAsync([Required] TId id, [Required] string relationshipName, - [FromBody] [Required] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken) + [Required] ISet<IIdentifiable> 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( { /// <inheritdoc /> [HttpPost] - public override Task<IActionResult> PostOperationsAsync([FromBody] [Required] IList<OperationContainer> operations, CancellationToken cancellationToken) + public override Task<IActionResult> PostOperationsAsync([Required] IList<OperationContainer> operations, CancellationToken cancellationToken) { return base.PostOperationsAsync(operations, cancellationToken); }