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

IMB*_*IMB 6 architecture api web-applications

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

什么是更好的做法?

  • 通过API使整个CRUD功能可用,并限制公共访问更新和删除.因此,您自己也将使用API​​进行应用程序的所有内部工作.

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

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

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

Yur*_*rev 3

我喜欢第一个选择。它有一个关于关注点分离和在正确的上下文中使用正确的工具的清晰示例。

通过对 API 使用 CRUD 方法,您可以获得一致性和完整性。它会带来更具凝聚力的设计、更少的代码重复以及更容易的演化。安全方面可以在支持 API 的应用程序内部或外部实现。对于外部选项,您可以使用 3-d 方软件或硬件解决方案,例如防火墙。