我的 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
从路由映射到命令对象,这样我就不必将其包含在请求正文中?
您可以使用
[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);
}
从路由中分配并从请求正文中排除