如果我们具有多个已更改的属性,您将如何通过REST服务实现批量更新?
假设我们有一个管理员在他的软件中管理100台客户端计算机。有些计算机更改了位置,有些则被删除。其他人得到了新的描述,等等set location = 1 for ids {1,5,8}
。
是否需要为每种更改类型进行多次服务呼叫,或者我现在可能看不到?
更新:
不仅将一个或多个记录更新为给定值,而且还结合了不同的更新方案。
Update
用电脑ids [1,5,8]
来locationId=4
Delete
电脑用 ids [7,9]
Create
带有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
}
}
没有创造,但应该清楚如何做...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句