2014-02-03 3 views
1

Я пишу приложение, которое представляет собой «разъем» между двумя API, в рельсах 4.Rails - Вызовы API вместо базы данных

-----    --------        ------ 
|  | Webhooks |  | API Calls through a client |  | 
| API | ---------> | My APP | --------------------------> | API' | 
|  |   |  |        |  | 
-----    --------        ------ 

Это один из способов соединителя, нет базы данных, преобразования только данных и API.

Я хочу использовать модели для выполнения вызовов API внутри. т.е. модель продукта:

  • найти продукт
  • сохранить продукт
  • и т.д .. То же самое, что я могу сделать с базой данных, но с API вместо

Самая хитрая часть аутентификация API. У меня есть before_filter, прежде чем каждый webhooks получит хорошую учетную запись и ключ API, и мне нужно найти способ передачи моего клиента API в модель для выполнения вызова. Учетная запись API может отличаться между двумя веб-камерами.

так два вопроса:

  • это правильный способ сделать это (имеющие вызовы API в модели)? чтобы избежать дублирования кода и иметь тощие контроллеры
  • есть ли способ с Rails передать некоторые данные от контроллера к модели без специального параметра для каждого метода для моего клиента API?

заранее спасибо

+0

SoC http://en.wikipedia.org/wiki/Separation_of_concerns, так что нет, вы, вероятно, не должны этого делать. другое: если это трудно сделать в рельсах, это не очень хорошая идея. – phoet

ответ

1

Да, ваша логика должна еще быть воплощен в «модели» продукта. Это концептуально то же самое, что и activerecord и activeresource. Однако я запутался в вызовах API. Вы говорите, что вам нужно пройти аутентификацию API из веб-камеры? Разнообразно ли это в зависимости от модели или в зависимости от того, кто вызвал веб-сайт или что-то еще? Не совсем ясно, что вы пытаетесь сделать, поэтому пример был бы полезен.

+0

Извините, я постараюсь быть более конкретным. Я получил webhooks с платформ электронной коммерции (чистый JSON), на этом крючке есть «идентификатор магазина». Когда я получил крючок, я получил учетные данные '' API''', связанные с этим «идентификатором магазина», чтобы создать продукт или что-то в правильной учетной записи. Поэтому, когда я инициализирую свой клиент API для создания продукта, я должен указать адрес электронной почты + ключ API, который я получил в файле before_filter. это лучше? – dbaq

+1

Итак, продукт принадлежит к «магазину»? В этом случае я, вероятно, передал shop_id в прокси-класс Product API и просмотрел учетные данные API из класса Shop, который сопоставил shop_id с адресом электронной почты + api. Таким образом, у вас будет метод «shop» на продукте, и для вас api у вас будет api_class.some_api_call (shop.email, shop.api_key, другие параметры). Метод магазина вызвал бы @shop || = Shop.find (shop_id) – bridiver

Смежные вопросы