减少对外部 API 的身份验证调用 (Laravel 5.6)

Ada*_*ert 4 php api rest laravel eloquent

我的应用程序需要从外部 API 收集数据。

  • 我正在使用 Guzzle。
  • 我的 API 方法被写入存储在库文件夹中的单独类中。
  • 我有一个模型和控制器用于将我的应用程序连接到 API 并将信息拉回我的数据库。

API 需要进行身份验证调用以在每次调用时检索令牌。这在 72 小时内有效,但目前我每次都打这个电话。

有什么方法可以在不将令牌保存到数据库的情况下减少所需的调用次数?

我看过有关为 API 创建服务提供程序的教程。这对我的问题有帮助吗?如果一个类只是在单个模型/控制器中使用并且几乎没有依赖关系,是否需要创建服务提供者?

任何人都可以就在 Larval 5 中将 REST api 布局到外部服务的最佳实践提供一些建议吗?

Sim*_*n R 5

您可以采取多种选择。我认为我的偏好是将令牌存储在Laravel 的缓存中。使用此选项,您可以为其提供到期时间,并且您无需自己创建任何物理文件。

所以你可以做类似的事情;

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

如果 'myToken' 不存在,它将调用闭包,否则它将返回您已经存储的内容。

您始终可以将令牌保存到本地文件,但这很可能比缓存慢,尤其是当您使用 redis 驱动程序等缓存时。