У меня есть 2 API, API компании и API новостей. Я хочу извлечь Новости, связанные с Компанией, так что было бы наилучшей практикой для достижения этой цели?
В этом случае клиент должен сделать запрос к обоим API, чтобы получить список новостей для компании.
В этом случае только 1 запрос сделан от клиента, и все желаемое возвращается в 1 ответе
Хорошо, если вы хотите сделать это с базой данных и используете Doctrine: что бы вы сделали?
Именно так! Создайте сущность для этой проблемы:
class Company {
/*
* @ORM\OneToMany(...)
*/
private $news;
}
Теперь, если вы хотите получить компанию с идентификатором 1 и ее новостями, вы должны сделать что-то вроде этого:
$company = $entityManager->find('Company', 1);
$news = $company->getNews();
Проблема в том, что Doctrine нельзя использовать с REST API. Но есть драйвер для Doctrine, который работает с REST API. Это должно сделать трюк:
https://github.com/CircleOfNice/DoctrineRestDriver
/*
* @DataSource\Select("http://yourapi.com/company/{id}")
*/
class Company {}
/*
* @DataSource\Select("http://yourapi2.com/news/{id}")
*/
class News {}
Других решений пока нет …