silverstripe / graphql-devtools
帮助开发者使用SilverStripe的GraphQL API构建新应用的工具
Requires
- silverstripe/graphql: ^3 || ^4 || ^5
- symfony/filesystem: ^4 || ^5 || ^6
- symfony/finder: ^4 || ^5 || ^6
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3
This package is auto-updated.
Last update: 2024-09-19 02:06:25 UTC
README
帮助开发者使用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。