mll-lab / laravel-graphiql
轻松将 GraphiQL 集成到您的 Laravel 项目中
Requires
- php: ^8
- illuminate/console: ^9 || ^10 || ^11
- illuminate/contracts: ^9 || ^10 || ^11
- illuminate/support: ^9 || ^10 || ^11
Requires (Dev)
- ergebnis/composer-normalize: ^2.29
- larastan/larastan: ^2.5.2
- mll-lab/php-cs-fixer-config: ^5
- orchestra/testbench: ^7.7 || ^8.8 || ^9
- phpstan/extension-installer: ^1
- phpstan/phpstan: ^1.10.15
- phpstan/phpstan-mockery: ^1.1.1
- phpstan/phpstan-phpunit: ^1.3.11
README
这是一个为从 Laravel 服务 GraphiQL UI 的轻量级包装器
请注意:这是一个用于测试和探索您模式的 UI,不包括 GraphQL 服务器实现。要从 Laravel 服务 GraphQL API,我们推荐使用 nuwave/lighthouse。
安装
通过 composer 安装包
composer require mll-lab/laravel-graphiql
由于 Laravel 包发现,此包将自动注册,无需配置即可使用。
如果您使用 Lumen,请在 bootstrap/app.php
中注册服务提供者
$app->register(MLL\GraphiQL\GraphiQLServiceProvider::class);
升级指南
在主要版本之间升级时,请考虑 UPGRADE.md
。
配置
默认情况下,GraphiQL UI 可在 /graphiql
路径访问,并假设在 /graphql
路径有运行的 GraphQL 端点。
要更改默认设置,使用以下命令发布配置
php artisan vendor:publish --tag=graphiql-config
您可以在 config/graphiql.php
中找到配置文件。
Lumen
如果您使用 Lumen,请手动将其复制到该位置并在您的 boostrap/app.php
中加载配置
$app->configure('graphiql');
代理后的 HTTPS
如果您的应用程序位于解析 https 的代理后面,则生成的端点 URL 可能不会使用 https://
,从而导致 GraphiQL UI 默认无法工作。为了解决这个问题,请配置您的 TrustProxies
中间件以包含 \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR
在 $headers
中。
自定义
要进一步自定义 GraphiQL UI,发布视图
php artisan vendor:publish --tag=graphiql-view
您可以使用它进行各种自定义。
更改 GraphiQL 实例的设置
在发布的视图中调用 React.createElement(GraphiQL, ...)
时添加额外的 props。
React.createElement(GraphiQL, { ..., // See https://github.com/graphql/graphiql/tree/main/packages/graphiql#props for available settings });
配置基于会话的身份验证
基于会话的身份验证可以与 Laravel Sanctum 一起使用。如果您通过会话和 CSRF 使用 GraphQL,请将以下内容添加到发布的视图中的 <head>
<meta name="csrf-token" content="{{ csrf_token() }}">
按如下方式修改 GraphiQL props
React.createElement(GraphiQL, { ..., + defaultHeaders: JSON.stringify({ + 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content, + }), })
确保您的路由在 config/graphiql.php
中包括 web
中间件组
'routes' => [
'/graphiql' => [
'name' => 'graphiql',
+ 'middleware' => ['web']
],
],
本地资源
使用以下命令从您的服务器提供资源
php artisan graphiql:download-assets
这会将必要的 CSS、JS 和 Favicon 放入您的 public
目录。如果已下载资源,则将使用 CDN 的在线版本。
安全性
如果您不想在生产环境中启用 GraphiQL UI,可以在配置文件中禁用它。最简单的方法是将环境变量设置为 GRAPHIQL_ENABLED=false
。
如果您想保护 GraphiQL UI 的路由,可以在配置文件中添加自定义中间件。