spatie/laravel-visit

快速访问您的 Laravel 应用程序中的任何路由

1.1.1 2024-04-02 11:09 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包包含一个 artisan 命令 visit,允许您访问 Laravel 应用程序中的任何路由。

php artisan visit /my-page

该命令显示 HTML 的彩色版本...

screenshot

... 然后是一个结果块。

screenshot

该命令还可以彩色化 JSON 输出。它还支持一些 Laravel 美化功能,如请求前登录用户、使用路由名而不是 URL,等等。

想要使用 visit 访问任何网站

spatie/visit 工具 可以全局安装以访问任何网站。

支持我们

我们在创建 一流的开放源代码包 上投入了大量资源。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感谢您从家乡寄来明信片,并说明您正在使用我们哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将发布所有收到的明信片在我们的 虚拟明信片墙上

安装

您可以通过 composer 安装此包

composer require spatie/laravel-visit

要彩色化 HTML,您应该安装 bat

brew install bat

要彩色化 JSON,您应该安装 jq

brew install jq

可选地,您可以发布配置文件。

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

这是已发布配置文件的内容

return [
    /*
     * These classes are responsible for colorizing the output.
     */
    'colorizers' => [
        Spatie\Visit\Colorizers\JsonColorizer::class,
        Spatie\Visit\Colorizers\HtmlColorizer::class,
    ],

    /*
     * These stats will be displayed in the response block.
     */
    'stats' => [
        ...Spatie\Visit\Stats\DefaultStatsClasses::all(),
    ]
];

用法

要访问某个页面,请执行 php artisan 后跟一个 URL。

php artisan visit /your-page

screenshot

除了传递 URL,您还可以传递一个路由名给 route 选项。以下是一个示例,我们将访问名为 "contact" 的路由。

php artisan visit --route=contact

使用不同的方法

默认情况下,visit 命令将执行 GET 请求。要使用不同的 HTTP 动词,您可以将其传递给 method 选项。

php artisan visit /users/1 --method=delete

传递有效载荷

您可以通过使用有效载荷将有效载荷传递给非 GET 请求。有效载荷应该格式化为 JSON。

php artisan visit /users --method=post --payload='{"testKey":"testValue"}'

当您传递有效载荷时,我们假设您想要执行 POST 请求。如果您想使用另一个 HTTP 动词,请明确传递它。

visit <your-url> --method=patch --payload='{"testKey":"testValue"}'

登录用户

要在请求之前登录用户,请添加 --user 并传递一个用户 ID。

php artisan visit /api/user/me --user=1

或者,您也可以通过 user 选项传递电子邮件地址。

php artisan visit /api/user/me --user=john@example.com

显示响应头

默认情况下,visit 命令不会显示任何头信息。要显示它们,请添加 --headers 选项

php artisan visit /my-page --headers

screenshot

跟随重定向

默认情况下,visit 命令不会跟随重定向。要跟随重定向并显示重定向目标的响应,请添加 --follow-redirects 选项。

php artisan visit /my-page --follow-redirects

显示异常页面

当您的应用程序响应异常时,visit 命令将显示错误页面的 HTML。

要使 visit 命令显示实际的异常,请使用 --show-exception 选项。

php artisan visit /page-with-exception --show-exception

仅显示响应

如果您希望visit命令仅显示响应,省略最后的响应结果块,请传递--only-response选项。

php artisan visit / --only-response

仅显示响应属性块

要避免显示响应,仅显示响应结果块,请使用--only-stats选项。

php artisan visit / --only-stats

避免对响应进行着色

visit命令会自动着色任何HTML和JSON输出。为了避免输出被着色,请使用--no-color选项。

php artisan visit / --no-color

将结果HTML显示为文本

通常HTML响应相当长。这可能会使得难以快速看到在浏览器中将要显示的文本。要将HTML转换为文本版本,您可以传递--text选项。

php artisan visit / --text

这是默认Laravel主页的样子。

screenshot

过滤HTML输出

如果您只想看到HTML响应的一部分,可以使用--filter选项。对于HTML输出,您可以传递CSS选择器

假设您的应用程序的完整响应是这样的HTML

<html>
    <body>
        <div>First div</div>
        <p>First paragraph</p>
        <p>Second paragraph</p>
    </body>
</html>

这个命令 ...

php artisan visit / --filter="p"

... 将会显示

<p>First paragraph</p>
<p>Second paragraph</p>

过滤JSON输出

如果您只想看到JSON响应的一部分,可以使用--filter选项。您可以使用点表示法来访问嵌套的部分。

假设您的应用程序的完整响应是这样的JSON

{
    "firstName": "firstValue",
    "nested": {
        "secondName": "secondValue"
    }
}

这个命令 ...

php artisan visit / --filter="nested.secondName"

... 将会显示

secondValue

添加统计数据

在响应下面的结果块中,您会看到一些默认的有趣统计数据,例如响应时间和执行的查询。

您可以通过创建自己的Stat类来添加更多的统计数据。有效的Stat是任何扩展了Spatie\Visit\Stats\Stat的类。

以下是这个基类的外观

namespace Spatie\Visit\Stats;

use Illuminate\Contracts\Foundation\Application;

abstract class Stat
{
    public function beforeRequest(Application $app)
    {
    }

    public function afterRequest(Application $app)
    {
    }

    abstract public function getStatResult(): StatResult;
}

作为一个示例实现,看看这个包中包含的RunTimeStat

namespace Spatie\Visit\Stats;

use Illuminate\Contracts\Foundation\Application;
use Symfony\Component\Stopwatch\Stopwatch;
use Symfony\Component\Stopwatch\StopwatchEvent;

class RuntimeStat extends Stat
{
    protected Stopwatch $stopwatch;

    protected ?StopwatchEvent $stopwatchEvent = null;

    public function __construct()
    {
        $this->stopwatch = new Stopwatch(true);
    }

    public function beforeRequest(Application $app)
    {
        $this->stopwatch->start('default');
    }

    public function afterRequest(Application $app)
    {
        $this->stopwatchEvent = $this->stopwatch->stop('default');
    }

    public function getStatResult(): StatResult
    {
        $duration = $this->stopwatchEvent->getDuration();

        return StatResult::make('Duration')
            ->value($duration . 'ms');
    }
}

要激活一个Stat,您应该将其类名添加到visit配置文件的stats键中。

// in config/stats.php

return [
    // ...
    
    'stats' => [
        App\Support\YourCustomStat::class,
        ...Spatie\Visit\Stats\DefaultStatsClasses::all(),
    ]
]

测试

composer test

变更日志

请参阅变更日志以了解最近发生了哪些变化。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可协议

MIT许可协议(MIT)。请参阅许可文件以获取更多信息。