我觉得我的问题通过其他一些问题得到了部分回答,但我无法将所有问题整理在一起。
基本上,我想构建一个相当简单的网络应用程序,但也能够相当轻松地构建一个移动应用程序。根据我的研究,最佳实践是构建RESTful JSON API,然后将该API用于我的Web应用程序和移动应用程序。
我已经开始为我的JSON API开发身份验证(使用:http://lucatironi.net/tutorial/2015/08/23/rails_api_authentication_warden/)并且我已经在Heroku上了解它。现在,对于我的网络应用,我使用HTTParty来使用该API,并且我让JSON得到了很好的回复。但是,我不太确定如何处理数据库。我的第一个想法是,我可能需要通过它自己的API调用来访问API的数据库,但这看起来非常复杂(只是想到必须为User.find_by_<every attribute>
创建函数让我感到害怕)。另一个想法是让我的网络应用程序使用API应用程序的数据库。但是,如果应用程序在Heroku上,我无法找到有关如何执行此操作的任何信息。
所以基本上,我想知道最好的方法是什么。当然,有一个标准是每个使用API的大型或小型Web应用程序。我真的很惊讶,如今这么流行的东西很难找到好的答案。或者我这样做是错的?任何指针都将非常感激。
答案 0 :(得分:1)
数据库是Heroku用语中的附加组件。
使用heroku addons
获取应用的附加组件列表。
$ heroku addons -a appname
Add-on Plan Price
──────────────────────────────────────── ───────── ─────
heroku-postgresql (relaxing-purely-8366) hobby-dev free
└─ as DATABASE
首先,您可能希望删除附加到前端应用程序的数据库:
heroku addons:destroy fat-samurai-1234
然后找到附加到API应用程序的数据库加载项的名称,并将加载项附加到您的前端应用程序。
heroku addons:attach shining-sushi-1234 -a sushi.
关于哪种方法合法,这是一个讨论的问题。今天的许多应用程序都使用单页面体系结构,其中整个应用程序是在前端创建的 - 使用javascript。所以你的应用程序只是消耗你的REST API。流行的框架是Ember.js,Bootstrap和Angular。
另一种方法是创建一个经典的服务器端应用程序 - 虽然可以创建一个使用REST API的应用程序,但是会有很大的开销,因此直接连接到数据库会更高效。 / p>