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

时间:2018-08-09 22:04:48

标签: php laravel rest api eloquent

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

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

API需要进行身份验证调用才能在每次调用中检索令牌。有效期为72个小时,但是此刻我每次都拨打此电话。

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

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

任何人都可以针对在Larval 5中为外部服务布置REST API的最佳实践提供一些建议吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

您始终可以将令牌保存到本地文件,但这比最有可能的缓存要慢,特别是如果您正在使用Redis驱动程序进行缓存。