silverstripe/graphql-devtools

帮助开发者使用SilverStripe的GraphQL API构建新应用的工具

安装次数: 217 458

依赖: 6

建议者: 1

安全性: 0

星标: 12

关注者: 12

分支: 13

开放问题: 5

类型:silverstripe-vendormodule

1.0.1 2024-02-02 03:40 UTC

This package is auto-updated.

Last update: 2024-09-19 02:06:25 UTC


README

CI

帮助开发者使用SilverStripe的GraphQL API构建新应用的工具

安装

composer require --dev silverstripe/graphql-devtools

功能

此模块添加了graphiql的实现,一个用于GraphQL服务器的浏览器内IDE。它提供了您模式的可浏览文档,以及查询的自动完成和语法检查。

访问IDE

在GraphQL 3.x中,它可以在/dev/graphiql/访问。

在GraphQL 4.x+,它可以在/dev/graphql/ide访问。

这是因为GraphQL 4+有自己的DevelopmentAdmin控制器。

模块的GraphQL v4版本允许您通过调用/dev/graphql/clear任务来清除您的模式。

安全性

默认情况下,该工具具有与其他开发工具(如dev/build)相同的限制

  • 在“dev”模式下,无需身份验证即可使用
  • 在“test”和“live”模式下,需要ADMIN权限
  • 默认情况下,通过composer require --dev安装。在大多数部署环境中,这意味着在“test”或“live”模式的环境中不可用

配置

在SilverStripe的大多数安装中,至少运行着两个GraphQL服务器 - 一个用于管理员(admin/graphql)和一个用于用户空间(/graphql)。默认情况下,仅显示default模式,但这可进行配置。

显示多个模式

重要:由于GraphQL Playground库的限制,显示多个模式将禁用页面刷新之间的IDE状态持久化。

同样重要:更改可用的模式时,请确保清除浏览器中的本地存储,否则您将获得不一致的状态。

您可以在控制器中配置可见的模式。

显示模式的选择列表

SilverStripe\GraphQLDevTools\Controller:
 # show two schemas
 schemas:
   - default
   - admin
 # default schema that is selected
 default_schema: admin 

显示所有模式

SilverStripe\GraphQLDevTools\Controller:
 # show two schemas
 schemas: '*'
 default_schema: default 

此外,您可以通过使用?schema=<schemaName>覆盖请求中的配置,例如http://example.com/dev/graphql/ide?schema=mySchema

如果您正在使用自定义控制器作为您的GraphQL端点

IDE通过检查Director以查找映射到SilverStripe\GraphQL\Controller实例的路由来查找模式。如果出于某种原因您正在使用自定义控制器,您可能会收到错误:“无法找到默认模式'default'。您需要将其添加到SilverStripe\Control\Director.rules配置设置中。”

为了避免这种情况,您可以在Director配置中显式地将您的graphql路由映射到模式

SilverStripe\Control\Director:
  rules:
    graphql:
      Controller: '%$MyCustomController'
      Schema: default

GraphQL模式初始化任务

此模块提供了一个GraphQLSchemaInitTask任务,用于初始化基本GraphQL模式以开始。它将为您的模式创建配置文件和基本解析器。具体来说,它将创建

  • app/_config/graphql.yml
  • app/_graphql包含几个yml文件
  • src/GraphQL/Resolvers.php

您必须处于CLI模式才能使用此任务

要查看任务的帮助,以查看可用的选项

vendor/bin/sake dev/tasks/GraphQLSchemaInitTask help=1

要以最小选项运行任务

vendor/bin/sake dev/tasks/GraphQLSchemaInitTask namespace=App

升级和维护IDE

正在运行的IDE库是GraphQL Playground。它作为暴露的资源从您的本地环境提供服务。该设置基于他们的“HTML页面”示例在此查看,该示例使用从CDN提供的远程包文件。此存储库使用手动创建的从CDN直接复制的包文件。这看起来可能很复杂,但主要优点是

  • 允许离线使用
  • 不需要设置构建链或安装NPM依赖项
  • 无需SRI保护

要升级GraphQL Playground,请参阅上面链接的示例,并使用他们的CDN下载最新发行版并将其放入此存储库中。请确保更新bundle.js文件顶部的注释,以跟踪下载的URL。