首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >api与直接查询数据库相比有何不同

api与直接查询数据库相比有何不同
EN

Stack Overflow用户
提问于 2019-11-13 17:14:39
回答 4查看 1.8K关注 0票数 5

我对什么时候需要API感到有点困惑。我最近创建了一个移动应用程序,使用flutter和云firestore作为数据库,我只需在需要时查询并写入数据库。现在我正在学习全栈web开发,我最近看了一个教程,他在其中构建了一个Express API,为数据库中的一个简单项提供了GET、POST和DELETE功能。

在我刚刚直接访问数据库的背景下,我不确定为什么在这种情况下需要API,这样我就不必每次都重写查询了吗?这是一个非常简单的项目,所以他绝对不会让其他开发人员使用第三方api。我是不是误解了API的确切用途?

这真的很简单,在MongoDB数据库中有一个集合,他使用postman对数据库进行读写,以检查它是否正常工作。

EN

回答 4

Stack Overflow用户

发布于 2019-11-13 17:25:20

API是前端(web/移动)存储/获取应用程序信息的标准方式。您的前端可以/不应该直接访问数据库。理解前端的目的,它只是显示界面,应该做最少的处理。所有的应用程序逻辑都应该在你的后端(API服务器),它通过API (GET,POST等)调用暴露给你的前端。因此,要在数据库中存储项,您需要在后端编写数据存储逻辑,并公开一个API端点,当触发该端点时,将执行存储操作。您的前端应该使用该API调用来触发存储过程。这样,您存储/database或任何其他内容的逻辑就不会暴露出来,只有API URL会暴露出来。前端的目的是公开,而后端/数据库永远不应该公开并从前端使用

票数 2
EN

Stack Overflow用户

发布于 2019-11-13 17:31:21

可能对你来说,API是不必要的。但是,API的用例很多。

例如:

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

同样值得一读的是:Why we should use REST?

票数 1
EN

Stack Overflow用户

发布于 2019-11-13 19:03:50

在您的例子中,您使用的是一个预先编写的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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58833714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档