node.js - 如何在客户端显示 GraphQL 模式(邮递员等测试工具)
问题描述
我正在使用 Node.js 和 GraphQL 来构建 API 服务器。
我想知道当使用 Postman/GraphQL Playground 等工具向远程 API 端点(当前使用 heroku)发送请求时,如何启用架构将自动显示的功能。
当我在 localhost 上启动服务器和 GraphQL Playground 时,它将在右侧显示架构和文档,如下所示。
但是当我将端点更改为远程服务器(在本例中为 heroku)时,它不会显示任何架构或文档。架构和文档侧边栏一直在加载,如下图所示(出于隐私问题,我隐藏了 url)
也没有在邮递员中显示
我是否需要在我的服务器中配置一些东西或使用一些包,以便它会在客户端自动返回并显示架构?
谢谢你。
解决方案
您可以尝试在您的 apollo-server 的构造函数参数introspection: true
中设置标志,或者,如果它适合您的需要,将您的应用程序的开发版本部署到 heroku。
解释:
要查看架构和文档,您的客户显然应该首先获取它。这种对 graphQL 模式的请求通常称为“自省”。
拥有后端 graphQL API 的完整模式无疑在开发过程中很方便。
但是,当我们的应用程序在生产环境中运行时,我们通常应该预料到恶意客户端。因此,在生产模式下发送自省可能是不安全的,因为它会给潜在的攻击者提供很多额外的信息。
这就是为什么在当前版本的 appolo-server 的生产环境中默认关闭自省的原因。
推荐阅读
- c - 为特殊事件打破 for 循环是一种好习惯吗?
- unity3d - 如何在 MRTK 和 Unity 中使用 Solver Handler
- c++ - 静态库:在 Linux 上混合调试和发布
- ms-word - 使用 OpenXml.WordProcessing .NET 以编程方式将重复部分项添加到 word 文档
- mysql - 使用 CASE COUNT 的 SUM 列的性能
- sql - 在 HiveSQL 中使用等号将 double 与 int 进行比较是否正确?
- .net-core - 我应该使用哪个版本的 Redis 客户端(Microsoft.Extensions.Caching.Redis 或 Microsoft.Extensions.Caching.StackExchangeRedis)
- perl - 为 Perl 脚本永久更改 @INC
- javascript - 如何使用 jQuery 显示下一个 ul li 元素
- azure - 如何在 Azure AKS 上的 API 服务器上应用更改