API设计:将内部功能与外部功能分开或组合?

时间:2012-04-19 18:38:24

标签: api web-applications architecture

举一个简单的例子,假设您在站点中创建了留言簿,并计划通过API为创建和读取功能提供外部访问权限。更新和删除不会包含在API中,因为它只能在内部使用。

什么是更好的做法?

  • 通过API提供整个CRUD功能,并限制对Update和Delete的公共访问。因此,您自己也将使用API​​进行应用程序的所有内部工作。

  • 为所有内部工作制作没有API的内部CRUD函数,然后为Create和Read创建单独的API。基本上,这为您提供了两种使用Create和Read的方法 - 一种使用API​​,一种不使用。

  • 在没有API的情况下进行内部更新和删除功能以进行内部工作,然后为创建和只读创建API。如果您需要使用创建和读取功能进行内部工作,则必须使用API​​。

我希望很清楚,通常最好的做法是什么?

1 个答案:

答案 0 :(得分:3)

我喜欢第一种选择。它有一个明确的例子,即在正确的背景下分离关注点和使用正确的工具。

通过对API使用CRUD方法,您可以获得一致性和完整性。它可以实现更具凝聚力的设计,更少的代码重复以及更容易的发展。安全方面可以在为API提供动力的应用程序内部或外部实现。对于外部选项,您可以使用三维聚会软件或防火墙等硬件解决方案。