Уменьшение вызовов аутентификации на внешнем API (Laravel 5.6)

Мое приложение требует, чтобы данные собирались из внешнего API.

  • Я использую Guzzle.
  • Мои методы API записаны в отдельный класс, хранящийся в папке библиотеки.
  • У меня есть модель и контроллер, которые можно использовать для подключения моего приложения к API и извлечения информации обратно в мою базу данных.

API требует вызова аутентификации для получения токена при каждом вызове. Это действительно 72 часа, но сейчас я звоню каждый раз.

Есть ли способы уменьшить количество требуемых вызовов без сохранения токена в базе данных?

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

Может ли кто-нибудь дать совет по наилучшей практике размещения REST api для внешних служб в Larval 5?

Вам действительно стоит где-то сохранить токен. Я бы настроил внешний интерфейс для вызовов API, а не серверную часть. Таким образом, вы можете сохранить токен в файле cookie или в локальном хранилище.

Chad K 10.08.2018 00:14

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

netzding 10.08.2018 00:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
2
963
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько вариантов, которыми вы можете воспользоваться. Я думаю, что предпочитаю хранить токен в Кеш Laravel. С помощью этой опции вы можете указать срок действия, и вам не нужно создавать какие-либо физические файлы самостоятельно.

Итак, вы могли бы сделать что-то вроде:

$minutes = 10 // minutes until it expires 
$value = Cache::remember('myToken', $minutes, function () {
    $token = some code to obtain the token ...
    return $token;
});

Если myToken не существует, он вызовет закрытие, иначе он вернет то, что вы уже сохранили.

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

Замечательная, отличная идея!

Adam Lambert 10.08.2018 09:44

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