非CRUD查询的API设计

时间:2013-04-12 18:00:14

标签: database api

我们正在考虑创建一个我们的内部应用和客户可以使用的API应用。这对于CRUD API查询来说似乎很简单,但我们遇到了更复杂查询的问题。

例如,假设内部应用想知道“对于每个公司,计算用户数量和仪表板数量,并返回结果”,那将如何作为API的一部分公开?

如果我们为所有公司的列表发出一个查询,然后每个公司触发两个查询来计算用户和仪表板,我认为性能会成为一个问题。

另外,我们如何处理当前正在对SQL进行硬编码以进行优化的问题?

也欢迎任何推荐读物。

1 个答案:

答案 0 :(得分:0)

我为所有数据库表生成crud存储过程,包括所有外键选择,然后为所有数据库表生成域对象。对我来说,对象映射感觉更具可扩展性。

如果有特定的数据视图会导致问题或不适合模型。我会用扩展数据扩展现有的域对象。例如:

public class Customer
{
    public int CustomerID{get;set;}
}

public class CustomerListingView:Customer
{
    public int NumberOfOrders{get;set;}
    public int NumberOfSomethingElse{get;set;}
} 

这至少允许您将自定义视图数据转换为需要超类型的控制器函数。