我想向开发人员打开我的 Rails 2.3 应用程序(托管在 Heroku 上)。我想到了两种方法:
- 使用 respond_to |格式| 应用程序,以及只允许授权开发人员 API 密钥的 before_filter
- 使用专用于 API 的第二个 Heroku 帐户,共享原始应用程序的数据库。现在,什么会更好:Rails、Sinatra 或Grape?
我知道这是一个模糊的问题。你有什么好的文章或架构模式可以帮助我吗?
谢谢,
凯文
我们使用葡萄。它很简单,并且允许更清晰的分离和语义。API 并不是真正的控制器。
我会添加一条新路线
website.com/api/widget/
website.com/api/another_service/
并制作一个在 API 溃败下看起来很自然的控制器。
然后,我将使用之前检查过的过滤器制作一个模块,但是您想检查 API 密钥。
class WidgetController < ActionController::Base
include 'api_keyable'
:before_filer :validate_api_key
def create
#However you create a widget from the params.
# respond to XML, YAML, JSON, whatever
end
end
如果您后来发现要在一个应用程序上处理 website.com/api/widgets 而在另一个应用程序上处理 website.com/api/wadgets,您的最终用户将永远不会知道并且您的代码不需要进行太多更改。