mll-lab/laravel-graphiql

轻松将 GraphiQL 集成到您的 Laravel 项目中

v3.2.1 2024-04-03 12:38 UTC

This package is auto-updated.

Last update: 2024-09-03 13:28:02 UTC


README

这是一个为从 Laravel 服务 GraphiQL UI 的轻量级包装器

GitHub license Packagist Packagist

Screenshot of GraphiQL with Doc Explorer Open

请注意:这是一个用于测试和探索您模式的 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 的路由,可以在配置文件中添加自定义中间件。