我对什么时候需要API感到有点困惑。我最近创建了一个移动应用程序,使用flutter和云firestore作为数据库,我只需在需要时查询并写入数据库。现在我正在学习全栈web开发,我最近看了一个教程,他在其中构建了一个Express API,为数据库中的一个简单项提供了GET、POST和DELETE功能。
在我刚刚直接访问数据库的背景下,我不确定为什么在这种情况下需要API,这样我就不必每次都重写查询了吗?这是一个非常简单的项目,所以他绝对不会让其他开发人员使用第三方api。我是不是误解了API的确切用途?
这真的很简单,在MongoDB数据库中有一个集合,他使用postman对数据库进行读写,以检查它是否正常工作。
发布于 2019-11-13 17:25:20
API是前端(web/移动)存储/获取应用程序信息的标准方式。您的前端可以/不应该直接访问数据库。理解前端的目的,它只是显示界面,应该做最少的处理。所有的应用程序逻辑都应该在你的后端(API服务器),它通过API (GET,POST等)调用暴露给你的前端。因此,要在数据库中存储项,您需要在后端编写数据存储逻辑,并公开一个API端点,当触发该端点时,将执行存储操作。您的前端应该使用该API调用来触发存储过程。这样,您存储/database或任何其他内容的逻辑就不会暴露出来,只有API URL会暴露出来。前端的目的是公开,而后端/数据库永远不应该公开并从前端使用
发布于 2019-11-13 17:31:21
可能对你来说,API是不必要的。但是,API的用例很多。
例如:
同样值得一读的是:Why we should use REST?
发布于 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://stackoverflow.com/questions/58833714
复制相似问题