Как добавить публичный API в приложение Rails?

Я хотел бы открыть свое приложение Rails 2.3 (размещенное на Heroku) для разработчиков. Я думал о двух способах сделать это:

  1. Использование формы response_to |form| приложения, а фильтр before_filter разрешает только ключи API авторизованным разработчикам.
  2. Использование второй учетной записи Heroku, предназначенной для API, совместное использование базы данных исходного приложения. Итак, что лучше: Rails, Sinatra или Grape?

Я знаю, что это расплывчатый вопрос. Есть ли у вас какие-нибудь хорошие статьи или архитектурные шаблоны, которые могли бы мне помочь?

Спасибо,

Кевин


person martini-bonanza    schedule 20.12.2010    source источник


Ответы (2)


Мы используем Виноград. Это просто и обеспечивает более четкое разделение и семантику. API на самом деле не является контроллером.

person dB.    schedule 29.07.2011

Я бы добавил новый маршрут

веб-сайт.com/api/виджет/

веб-сайт.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

если вы позже обнаружите, что хотите обрабатывать веб-сайт.com/api/widgets в одном приложении и веб-сайт.com/api/wadgets в другом, ваши конечные пользователи никогда не узнают, и ваш код не должен сильно изменяться.

person EnabrenTane    schedule 20.12.2010