API设计:内部功能与外部功能分开还是结合?

API设计:内部功能与外部功能分开还是结合?,api,web-applications,architecture,Api,Web Applications,Architecture,举个简单的例子,假设您在站点中创建了留言簿,并计划通过API为创建和读取函数提供外部访问。更新和删除将不包括在API中,因为它只应在内部使用 什么是更好的做法 通过API使整个CRUD函数可用,只需限制公众对更新和删除的访问。因此,您自己也将在应用程序的所有内部工作中使用API 为所有内部工作创建不带API的内部CRUD函数,然后为create和Read only创建单独的API。基本上,这为您提供了两种使用创建和读取的方法—一种是使用API,另一种是不使用API 为内部工作创建内部更新和删除

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

什么是更好的做法

  • 通过API使整个CRUD函数可用,只需限制公众对更新和删除的访问。因此,您自己也将在应用程序的所有内部工作中使用API

  • 为所有内部工作创建不带API的内部CRUD函数,然后为create和Read only创建单独的API。基本上,这为您提供了两种使用创建和读取的方法—一种是使用API,另一种是不使用API

  • 为内部工作创建内部更新和删除没有API的函数,然后为创建和只读创建API。如果需要对内部工作使用创建和读取函数,则必须使用API


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

我喜欢第一种选择。它有一个明确的例子,说明了如何在正确的环境中分离关注点和使用正确的工具

通过对API使用CRUD方法,您可以获得一致性和完整性。它带来了更内聚的设计、更少的代码重复和更容易的沿途演进。安全方面可以在为API供电的应用程序内部或外部实现。对于外部选项,您可以使用三维第三方软件或硬件解决方案,例如防火墙