swagger REST API补丁请求更改模型的一个字段



我设置了一个rest API,其中包含以下项目作为模型的一部分。它是一种为公司员工处理支付方式的卡片模型。我试图在卡控制器上创建一个补丁请求,在那里我将能够更新卡的余额。我有一个put方法,但每次我只想用补丁请求更新模型的平衡字段,而不是想要更新整个对象。

public class Card
{
[Key]
public long CardNumber { get; set; }
public decimal Balance { get; set; }
public string PinNum { get; set; }
public string CardId { get; set; }
public long EmployeeId { get; set; }

}

put方法用于更新模型中的所有字段,但我只打算更新余额。我正在使用swagger端点来查看更改的工作情况,并且在PATCH请求的swagger端点中,我希望它只显示JSON中的balance字段,并能够使用补丁更改更新db。

什么是最好的方式来处理更新只是平衡,它是一个补丁请求,如果是,它将如何实现?

难道您不需要卡号来知道要更新哪些卡的余额吗?除非你用这个ID路由。

您应该为余额创建DTO。基本上,您将创建一个名为"CardBalanceDto"的类,它将只包含您需要从Card模型中获得的字段(在本例中仅包含balance属性)。然后,在PATCH请求的API控制器方法上,简单地接受CardBalanceDto类型,然后只更改balance字段。

[HttpPatch("{id}")]
public async Task<IActionResult> PatchCard(long id, CardBalanceDto balanceDto)
{
var card = new Card() { Id = id, Balance = balanceDto.Balance};
_context.Cards.Attach(Card);
_context.Entry(card).Property(x => x.Balance).IsModified = true;
return Ok(await _context.SaveChangesAsync());
}

你的DTO看起来像这样:

public class CardBalanceDto {
public decimal Balance { get; set; }
}

最新更新