Агрегация внешнего API CakePHP - вопрос о модели, источнике данных и поведении - передовой опыт - PullRequest
1 голос
/ 17 января 2010

У меня есть проект, который требует от меня интеграции с 2 REST API и последующего агрегирования результатов. Я строю этот проект в CakePHP

Мой основной подход:

Продукт (модель) Продукты (контроллер) API1 (источник данных) API2 (источник данных) Агрегация (поведение)

Основной поток: 1. Пользователь вводит название продукта в форму поиска / products / search, т.е. "DVD" 2. действие search () для вызовов контроллера model-> find (), передающее поисковый запрос 3. Затем поисковый термин передается каждому источнику данных, и API возвращают результаты. 4. поведение очищает, агрегирует и упорядочивает результаты в одном наборе данных 5. модель передает данные обратно в контроллер, который затем передает данные в представление 6. постраничные результаты отображаются на странице результатов поиска

Здесь я застрял ...

Может ли одна модель использовать 2 источника данных, а затем использовать поведение для выполнения задач агрегирования.

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

Буду очень признателен за любые идеи о том, как это сделать. Объем проекта заключается в том, что количество интегрированных API может возрасти до 10+ в зависимости от успеха этого проекта-прототипа.

Спасибо, Пол

1 Ответ

1 голос
/ 01 марта 2010

Вы можете сделать что-то подобное в своей модели

App::import('ConnectionManager');

$abc = ConnectionManager::getDataSource('abc');
$xyz = ConnectionManager::getDataSource('xyz');

$data1 = $abc->find('all');
$data1 = $xyz->find('all');
...