如何根据现有Rails / Postgres Web应用程序中的数据创建API服务器?

时间:2017-12-08 07:37:58

标签: ruby-on-rails postgresql rest api

我有一个使用Ruby on Rails和PostgreSQL开发的现有Web应用程序。我需要使用该Web应用程序中的数据创建一个移动应用程序(可能还有一个单独的Web应用程序),因此我希望创建一个API服务器。是否可以在不更改原始Rails / Postgres Web应用程序的源代码的情况下执行此操作?

有关最佳方法的任何想法吗?或者有人能指出我正在研究的方向吗?

2 个答案:

答案 0 :(得分:1)

要将Heroku上托管的新应用程序连接到Heroku上托管的PostgreSQL数据库,只需将您的新应用程序正常推送到Heroku即可。

然后,在新应用程序仪表板上的“设置”下,进入“配置变量”并为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> <script src="https://npmcdn.com/tether@1.2.4/dist/js/tether.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script> <td> <div class="form-group"> <input type="text" class="form-control"/> </div> <div class="progress"> <div class="progress-bar progress-bar-success" id="progress-bar-1" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"> <span class="sr-only">60% Complete</span> </div> </div> </td> <td></td> <div class="form-group"> <input type="text" class="form-control"/> </div> <div class="progress"> <div class="progress-bar progress-bar-success" id="progress-bar-2" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"> <span class="sr-only">60% Complete</span> </div> </div> </td>添加新配置。为您现有的数据库添加url的值。

您的新应用程序需要与现有应用程序位于同一帐户中。 Heroku不允许您跨帐户连接。

您可能需要查看this question了解更多详情。

答案 1 :(得分:0)

听起来基本上你想让两个应用程序连接到提供相同方法的同一个数据库,但是以不同的格式响应(html vs,例如,json)。相对容易地做到这一点的一种方法可能是将另一个api仅Rails应用程序推送到连接到同一Postgres数据库的heroku(注释中提到的),但是您必须弄清楚如何以不同的方式处理API端点的身份验证。这取决于您是将这些终点暴露给公众还是类似移动前端。如果您以前在Web应用程序上使用会话,则可能需要切换到基于令牌的身份验证。一旦为api路由实现安全authenticatoin,您所要做的就是确保您的方法(而不是渲染erb或haml模板)返回您的目标客户端可以使用的原始数据。