Внешний API в Laravel 5.6. Синхронизировать данные с моей собственной базой данных через задания в очереди, используя модель, контроллер или что-то еще?

Мое приложение будет синхронизировать данные из внешней службы, используя их REST api. Я планирую периодически обновлять / создавать данные в моей базе данных из их.

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

В моем случае я планирую запускать запланированные задания.

Могу я спросить совета, как бы вы посоветовали это настроить? На данный момент у меня есть:

  • Класс API ExternalProvider в моей папке приложения / библиотеки.
  • Модель, которая может взаимодействовать с базой данных, в которой будут храниться данные внешних поставщиков API.

Должно ли взаимодействие с API осуществляться через другую модель, контроллер или что-то еще?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
1 072
1

Ответы 1

Планирование может выполняться с помощью Laravel Планировщик задач:

// add a cron job
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1


// add your tasks to the schedule function
protected function schedule(Schedule $schedule)
{
    // scheduled a queued job to run every 30 minutes
    $schedule->job(new SyncRemoteApiData)->everyThirtyMinutes();
}

Создание моделей, представляющих ответы API, является хорошей идеей, особенно если вы структурируете локальные таблицы базы данных в форме полезных данных ответа.

В противном случае они по-прежнему предоставляют удобное место для сопоставления вашей схемы со своей. Кроме того, вы получаете все преимущества класса модели Eloquent.

Однако я бы сделал большую часть логики в классах Job. Вероятно, в контроллерах не так много (никакой) необходимости, если это автоматизировано, а ваше приложение является инициатором.

Другие вопросы по теме