api与直接查询数据库相比如何

我对何时需要API感到困惑。我最近创建了一个以flutter和cloud firestore作为数据库的移动应用程序,我在其中仅查询并在需要时将其写入数据库。现在,我正在学习全栈Web开发,最近我看了一个教程,他在其中构建了一个具有GET,POST和DELETE功能的Express API,用于数据库中的一个简单项目。

从我直接访问数据库的背景开始,我不确定为什么在这种情况下需要使用API​​,是否这样,所以我不必每次都重写查询?这是一个非常简单的项目,因此他绝对不会制作供其他开发人员使用的第三方API。我是否误解了API的确切功能?

这真的很简单,MongoDB数据库中有一个集合,他正在使用邮递员在数据库中读写数据,以检查它是否有效。

ww1610 回答:api与直接查询数据库相比如何

API是您的前端(网络/移动设备)存储/获取应用程序信息的一种标准方式。您的前端永远不能/应该直接访问数据库。了解前端的目的是仅显示界面,并且应该进行最少的处理。所有应用程序逻辑都应该在您的后端(API服务器)上,该后端通过API(GET,POST等)调用暴露给您的前端。因此,要将项目存储在数据库中,您将在后端编写数据存储逻辑,并公开一个API端点,该端点在被触发时将执行存储操作。您的前端应使用该API调用来触发存储过程。这样,您的存储/数据库逻辑或其他任何东西都不会暴露,只有API URL会暴露出来。前端的目的是公开,而后端/数据库绝不能从前端公开和使用

,

可能适合您,不需要API。但是,API的用例很多。

例如:

  • 您不必为每个平台编写业务逻辑。 (iOS,Android,Web或其他)
  • 您的应用将是轻量级的,因为某些计算将被卸载到服务器上。
  • 您的应用可以进行反向工程以获取秘密信息。 (或者,您的秘密算法可能是?)
  • 如果您需要在文件系统中存储要与他人共享的内容,怎么办?

也很不错:Why we should use REST?

,

在您的情况下,您使用的是预先编写的SDK,该SDK知道如何连接到Firestore,在需要时进行缓存和更新应用程序数据,并提供了在Firestore中读取,写入和删除数据的标准方法(以及相关的文档)以及来自Google的示例数据。

因此,不需要使用API​​(如针对mongoDB所述),这是不希望的。

在某些情况下,您可能希望不具有对Firestore集合或文档的读取或写入访问权限,在这种情况下,您可以编写一个云函数,该函数会使用您的应用程序通过参数调用该函数,以接收所需的数据进行编写,并进行超出云Firestore规则功能的某种检查或操作(尽管这些可能会变得非常复杂)。参见https://firebase.google.com/docs/firestore/security/get-started

Todd(在此链接中的视频中)在该主题上做了一些不错的视频。

但是,这实际上与您在问题中提到的API的工作方式不同。

因此,在使用Firestore的情况下,您应该使用SDK,而不要通过创建自己的API来重新发明轮子。

例如,如果您要共享照片,还可以将其存储在firebase存储器中,然后提供URL,供其他设备访问而无需安装您的应用程序。

如果您想写一些东西到Firestore中,然后发送给所有其他用户,则可以在每个应用程序上使用侦听器,数据到达Firestore后将发送到这些应用程序。

https://firebase.google.com/docs/firestore/query-data/listen对此进行了概述。

firebase经常要注意的一件事是做任何事情的成本。云功能比读取Firestore文档的成本更高。

这概述了firebase功能集中不同功能的定价。

https://firebase.google.com/pricing

,

另一个最重要的因素是耦合。通过添加到@ Dijkstra,API提供了一种将逻辑相互分离的方法,从而提高了应用程序的可靠性,可维护性,容错性,并在需要时提供了可伸缩性。

因此这里没有对与错,或者将API与DB调用进行比较本身并不合理,因为从数据库中获取数据是最终目的。即使您使用REST API或查询数据库。

达到相同目的的方法可能会因特定要求而异。例如,从井中取水。

  • 如果您每天需要1桶水,而且您是唯一的用户,则可以随时爬下水井并取水。
  • 但是,如果有很多用户,您可能想在人们使用它的位置安装一个拉动轮,将取来的水倒入他们的水桶中,但这又要取决于每天有100个用户使用或更多。因为这在100个以上的用户的情况下不起作用。
  • 如果情况是说有1000个用户的整个社区都需要水,那么您将获得更复杂的解决方案,即安装电动水泵以抽出水并通过管道将其供应到用户家中。该解决方案具有许多优点,例如供应快,易于使用,过滤水,预定时间等。但是,实现该解决方案的成本和精力也更高。

总而言之,这取决于成本与收益之比,对于唯一的解决方案还是特定的问题,您和您只能列出,因为您是规模的最佳判断者和未来的用户流。


这样做的时候,您可以问以下有关解决方案的问题,以帮助您做出决定:

  • 解决方案是否满足问题的主要要求?
  • 建造它需要多少时间?
  • 在我们花费时间来构建解决方案的过程中,它是否将以其容量的75%或以上来工作?
  • 如果没有,我可以使用一个更简单的解决方案来满足该问题并随着需求的增加对其进行扩展?

HTH。

本文链接:https://www.f2er.com/3111490.html

大家都在问