我将开发我的第一个ASP.NET WEB Api服务应用程序,但我不太确定如何开始。
如果我的数据库中有20个表,我是否必须创建20个Api控制器?
出于测试目的,我一直在为每个表创建一个api控制器。我不知道它是否是最好的方法,但它有效。我将使用工作单元模式和依赖注入(Unity for webapi)。 有人有任何想法或建议吗?
提前谢谢。
答案 0 :(得分:5)
您的服务不应反映您存储数据的方式。事实上,许多人会认为这是一种反模式或不良做法。
现在有两种流行趋势/模式用于设计API服务层(以及其他许多我不会在此提及的内容)
这将引导您按业务域/功能或类似方式对服务进行分组。它也将以任务/行动为导向。所以每个服务都包含系统应该执行的操作和任务。
如果我正在开发电子纪念系统,我会创建这些服务:
在这个架构中,您将设计您的服务,就好像它们提供对资源组的访问(但不是明确的活动,操作,命令等)。
HTTP协议用作通信层,因此每个资源都有其URI / N,并执行HTTP操作来控制此资源( GET 查询,< strong> POST 用于插入, PUT 进行更新,删除等。)
使用上面相同的电子商务案例,这就是它在RESTful服务架构中的外观:
有关RESTful API的更详细示例,请参阅SpreeCommerce和Shopify以及他们如何构建其API端点。
这种架构最近越来越受欢迎并得到广泛接受,主要是因为它允许后端支持构建多个客户端应用程序(想想Web和移动),但要注意它会迫使你转移大部分系统开发/编码面向客户端(如果是Web应用程序/站点,则为HTML / JS)
我还鼓励您阅读有关SOA以及其他设计和架构模式的更多信息。虽然我不推荐特定的阅读材料。
很好地记录您的API。使用直观的工具,例如Apiary及其基础技术API Blueprint
为您的API使用自动化测试工具。如果它可以从您的API文档中读取用例并生成基于它们的单元测试(最好使用API Blueprint技术,无耻插件:API Blueprint host for asp.net可以帮助使用它的文档来模拟API),那么它是最好的。
< / LI>
答案 1 :(得分:0)
如果我的数据库中有20个表,我是否必须创建20个Api控制器
没有。您只需要一个控制器来满足它所需的功能。它的存储方式和位置无关紧要。如果您的控制器提供与下订单相关的方法,它通常会与很多表(客户,库存,产品,发票,订单,订单行,运输等)进行交互。