spatie / laravel-visit
快速访问您的 Laravel 应用程序中的任何路由
Requires
- php: ^8.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- nunomaduro/termwind: ^2.0
- soundasleep/html2text: ^2.0
- spatie/laravel-package-tools: ^1.11.1
- symfony/css-selector: ^6.0
- symfony/dom-crawler: ^6.0
- symfony/stopwatch: ^6.0
Requires (Dev)
- nunomaduro/collision: ^v8.1.1
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.5.16
- spatie/laravel-ray: ^1.29
README
此包包含一个 artisan 命令 visit
,允许您访问 Laravel 应用程序中的任何路由。
php artisan visit /my-page
该命令显示 HTML 的彩色版本...
... 然后是一个结果块。
该命令还可以彩色化 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
除了传递 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
跟随重定向
默认情况下,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主页的样子。
过滤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)。请参阅许可文件以获取更多信息。