可持续忙碌/astrel-laravel

将 Astrel 集成到您的 Laravel 应用程序中。

v1.0.2 2021-09-21 12:06 UTC

This package is auto-updated.

Last update: 2024-09-21 18:32:00 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Astrel 集成到您的 Laravel 应用程序中。

Astrel 是一个远程配置编排应用程序,允许您在不接触代码的情况下更改应用中的任何内容。

🍿 你是视觉学习者吗? 这里有一个快速的视频教程,帮助您开始使用 Astrel 和 Laravel。

安装

通过 composer 安装此软件包。

composer require sustainable-hustle/astrel-laravel

在您的 .env 文件中添加您的 Astrel API 密钥。

ASTREL_API_KEY="sxjTgBJAxkT2TNyKf9vabFI0L07AyItM5o3iiloS"

最后,监听 Astrel 的 webhooks 以清除缓存。

// routes/web.php
use SustainableHustle\Astrel\Facades\Astrel;
Astrel::webhookRoute('astrel/webhook');

// Make sure CSRF verification is disabled on that route.
class VerifyCsrfToken extends Middleware
{
    protected $except = [
        '/astrel/webhook',
    ];
}

可选地,发布 astrel 配置文件。

php artisan vendor:publish --tag="astrel-config"

基本用法

此软件包提供了一种外观,您可以使用它来检索一个或多个方面。方面是一个配置并直接在 Astrel 控制台中更新的键/值对。

use SustainableHustle\Astrel\Facades\Astrel;

Astrel::all();                        // Returns all aspects.
Astrel::get('slug');                  // Returns the value of an aspect by giving its slug.
Astrel::get('slug', 'default value'); // Returns the default value if the given aspect has no value.

或者,您也可以使用 astrel 助手方法来访问 Astrel 管理器或直接访问值。

astrel()->all();                 // Equivalent to Astrel::all();
astrel('slug');                  // Equivalent to Astrel::get('slug');
astrel('slug', 'default value'); // Equivalent to Astrel::get('slug', 'default value');

请注意,如果您想回退到环境变量,您还可以像这样使用 astrel_env 助手函数。

astrel_env('my-slug');                           // Equivalent to astrel('my-slug', env('MY_SLUG'));
astrel_env('my-slug', 'MY_ENV_SLUG');            // Equivalent to astrel('my-slug', env('MY_ENV_SLUG'));
astrel_env('my-slug', 'MY_ENV_SLUG', 'default'); // Equivalent to astrel('my-slug', env('MY_ENV_SLUG', 'default'));

缓存

此软件包会自动缓存所有检索到的方面。这确保您的应用程序不需要在每次需要 Astrel 的值时都进行 API 调用。

您可以使用 Astrel 外观中的 flushrefetch 方法来清除缓存以及立即重新检索其内容。

use SustainableHustle\Astrel\Facades\Astrel;

Astrel::flush()   // Flush the cache for all aspects.
Astrel::refetch() // Flush the cache and refetch all aspects immediately.

默认情况下,缓存永不过期,这意味着您必须在必要时手动清除它。这是因为 Astrel 会在任何更改时向您发送 webhook,因此您只需在必要时清除缓存(请参阅下文部分)。

但是,如果您想自定义缓存的生存期,您可以更新 config/astrel.php 文件中的 cache_lifetime 变量。

在接收到 webhook 时清除缓存

如上所述,您可以配置 Astrel 在任何值更新时向您发送 webhook。这意味着您可以使用此 webhook 来清除并立即重新检索所有方面。

此软件包在 Astrel 外观上提供了一个名为 webhookRoute 的助手方法,它正是这样做的。只需将其添加到您的路由文件中,并链式配置您可能需要的任何路由配置。

use SustainableHustle\Astrel\Facades\Astrel;

Astrel::webhookRoute();                 // Register a route that calls `Astrel::refetch()` when triggered.
Astrel::webhookRoute('astrel/webhook'); // Provide a custom path to that route.
Astrel::webhookRoute('astrel/webhook')  // This method returns a Route object so you can chain anything you want.
    ->name('webhooks.astrel')
    ->middleware('web');

此外,如果您正在使用默认的 web 中间件组,请确保在 VerifyCsrfToken 中间件中禁用该路由的 CSRF 验证。

class VerifyCsrfToken extends Middleware
{
    protected $except = [
-       //
+      '/astrel/webhook',
    ];
}