如果我们有多个更改的属性,您将如何通过 REST 服务实现批量更新?
假设我们有一位管理员在他的软件中管理 100 台客户端计算机。有些电脑改变了它们的位置,有些电脑被删除了。其他的有一个新的描述,等等。所以它不仅仅是 set location = 1 for ids {1,5,8}。
是否有必要为每种更改类型进行多次服务调用,或者是否有可能我现在没有看到?
更新:
它不仅仅是将一条或多条记录更新为给定值,而是不同更新场景的组合。
更新具有ids [1,5,8]的计算机到locationId=4删除ids [7,9] 的计算机
创建具有id [10]和locationId=7 的新计算机
如果客户端程序管理一堆记录(这里是计算机)并点击“保存”,这种情况并不少见。
请您参考如下方法:
我会这样做:
[Route("/computer/{ComputerId}", "POST")]
public class UpdateComputerRequest : IReturnVoid
{
public int LocationId { get; set; }
public int ComputerId { get; set; }
}
[Route("/computer/{ComputerId}", "DELETE")]
public class DeleteComputerRequest : IReturnVoid
{
public int ComputerId { get; set; }
}
[Route("/computers", "POST")]
public class BatchRequest : IReturnVoid
{
public List<UpdateComputerRequest> UpdateRequests { get; set; }
public List<DeleteComputerRequest> DeleteRequests { get; set; }
}
public class ComputerLocationService : Service
{
public void Post(UpdateComputerRequest request)
{
PostImpl(request);
}
public void Post(DeleteComputerRequest request)
{
DeleteImpl(request);
}
public void Post(BatchRequest request)
{
request.UpdateRequests.ForEach(PostImpl);
request.DeleteRequests.ForEach(DeleteImpl);
}
private void PostImpl(UpdateComputerRequest request)
{
// do stuff...
}
private void DeleteImpl(DeleteComputerRequest deleteComputerRequest)
{
// delete
}
}
没有创建,但应该清楚如何创建...
