Мое приложение требует, чтобы данные собирались из внешнего API.
API требует вызова аутентификации для получения токена при каждом вызове. Это действительно 72 часа, но сейчас я звоню каждый раз.
Есть ли способы уменьшить количество требуемых вызовов без сохранения токена в базе данных?
Я видел учебные пособия по созданию поставщиков услуг для API. Поможет ли это решить мою проблему? Есть ли необходимость в создании поставщика услуг, если класс используется только в рамках одной модели / контроллера и имеет несколько зависимостей?
Может ли кто-нибудь дать совет по наилучшей практике размещения REST api для внешних служб в Larval 5?
поставщик услуг не поможет вам, потому что это больше вопрос технологии, а не структуры и дизайна. Пожалуйста, не храните ключ API в файлах cookie или локальном хранилище. ваш оплаченный контингент может быть очень легко украден самим пользователем или сторонними плагинами.






Есть несколько вариантов, которыми вы можете воспользоваться. Я думаю, что предпочитаю хранить токен в Кеш Laravel. С помощью этой опции вы можете указать срок действия, и вам не нужно создавать какие-либо физические файлы самостоятельно.
Итак, вы могли бы сделать что-то вроде:
$minutes = 10 // minutes until it expires
$value = Cache::remember('myToken', $minutes, function () {
$token = some code to obtain the token ...
return $token;
});
Если myToken не существует, он вызовет закрытие, иначе он вернет то, что вы уже сохранили.
Вы всегда можете сохранить токен в локальный файл, но это, скорее всего, будет медленнее, чем кеширование, особенно если вы кешируете с помощью чего-то вроде драйвера redis.
Замечательная, отличная идея!
Вам действительно стоит где-то сохранить токен. Я бы настроил внешний интерфейс для вызовов API, а не серверную часть. Таким образом, вы можете сохранить токен в файле cookie или в локальном хранилище.