我使用Angular 4
作为我的前端框架,基本上只是asp net core
作为客户端从中获取数据并偶尔发布数据的API。
我正在制作一个仪表板来显示一些统计数据。我在数据库中拥有的数据不能直接用于此仪表板,因为它需要进行转换和进一步处理。我没有将模型实体返回到API,而是将View Model
与模型实体基本相同,并删除了一些ID。
我现在拥有的是我的Angular DashboardComponent
正在使用DataService
构建一个HTTP GET
请求,该请求指向我已经存在的API端点GetOrders
。这将从数据库中获取所有订单并将其返回到DataService
并最终返回DashboardComponent
,然后Google Charts
需要提取数据并进行大量处理和转换,以便准备好将数据提供给Orders
and并生成有意义的图表。然后,用户可以选择在仪表板上查看另一个图表,然后仅仅具有[HttpGet]
public double GetOrderTotal(string orderNumber)
{
// lets pretend here that we have a stored proc that returns an orderTotal
var orderTotal = _orderService.GetOrderTotalUsingStoredProc(orderNumber);
// this if else if block should be pushed at to the _orderService method
// or the OrderTotal stored procedure, otherwise any other code that relies
// on _orderService.GetOrderTotalUsingStoredProc might not know that discounts
// are applied to certain threshold amounts
if (orderTotal > 1000)
{
orderTotal = orderTotal * 0.9
}
else if (orderTotal > 10000)
{
orderTotal = orderTotal * 0.85
}
return orderTotal;
}
,但还必须从数据库中检索另一个实体,因此使用不同的终点重复上述API调用。
我的问题归结为:
一般来说,我正在寻找一些关于这个或最佳实践的设计模式,但实际上并没有找到一些东西。
一般“肠道检查”的东西可以帮助你确定放在哪里......
这不是应该使用什么设计模式的问题,而是应遵循的最佳实践。在我有限的经验中,应尽可能避免客户端的数据处理和转换。要回答第二个问题,是否应在客户端过滤数据,或者将过滤条件传递给后端以获取相同的数据。这取决于几个因素:
如果您的数据很大,您可能希望避免在后端提取整个数据和过滤数据,否则您可能希望在客户端本身过滤数据。