如何将路由中的 id 分配给命令而不在请求正文中重复它?

问题描述 投票:0回答:1

我的 ASP.NET Core 应用程序中有以下控制器方法:

[HttpPost("{personId:guid}/workExperience")]
public async Task<IActionResult> AddWorkExperienceAsync(
    [FromBody] AddWorkExperienceCommand command,
    [FromServices] IMediator mediator,
    CancellationToken cancellationToken)
{
    var result = await mediator.Send(command, cancellationToken);

    return Created(nameof(GetByIdAsync), result);
}

在此方法中,

personId
在路由(URL)中提供,但
AddWorkExperienceCommand
类还包含来自请求正文的
personId
属性。

如何将

personId
从路由映射到命令对象,这样我就不必将其包含在请求正文中?

c# asp.net-core asp.net-web-api mediator
1个回答
0
投票

您可以使用

[JsonIgnore]
属性,如下所示
System.Text.Json.Serialization

然后在控制器中,将路线中的 
using System.Text.Json.Serialization; public class AddWorkExperienceCommand : IRequest { [JsonIgnore] public Guid personId { get; set; } //others }

分配给命令中的

personId
PersonId

因此,
[HttpPost("{personId:guid}/workExperience")] public async Task<IActionResult> AddWorkExperienceAsync( Guid personId, [FromBody] AddWorkExperienceCommand command, [FromServices] IMediator mediator, CancellationToken cancellationToken) { command.PersonId = personId; var result = await mediator.Send(command, cancellationToken); return Created(nameof(GetByIdAsync), result); }

从路由中分配并从请求正文中排除

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.