将 GraphQL 模式从非 JS 服务器公开给 JS 客户端
Expose GraphQL schema from non-JS server to a JS client
我有一个用Java实现的GraphQL服务器和一个JavaScript客户端来查询它。我不喜欢的是客户端只需要知道架构,而不能从服务器获取它并动态地针对它构建查询。
现在,我知道 GraphiQL 以某种方式做到了这一点,但我猜这是因为它的后端也是用 JavaScript 编写的,因此客户端和服务器都可以使用它。我的模式是用 Java 定义的,但可能有一种方法可以自动生成客户端可以使用的 JavaScript 表示。
这样的事情已经存在了吗?
现在,我知道 GraphiQL 以某种方式做到了这一点,但我猜这是因为它的后端也是用 JavaScript 编写的,因此客户端和服务器都可以使用它。
实际上,(幸运的是)情况并非如此。它是用Javascript编写的,但它不需要实现这种行为。
我有一些好消息要告诉你...
内省!
关于 GraphQL 的一个很棒的事情是,事实上,客户端不必知道任何关于模式的信息,因为它可以使用内省来查询服务器。事实上,如果您没有明确提供模式来自动填充它,GraphiQL 将自动使用它。
从 GraphiQL 自述文件的 Props 部分:
schema:一个 GraphQLSchema 实例,如果不要使用,则为 null。如果提供了未定义,GraphiQL 将使用提取器发送内省查询以生成模式。
官方的 GraphQL Introspection 文档将为您提供更多信息和示例查询。他们查询其星球大战示例架构的示例:
{
__schema {
types {
name
}
}
}
这将返回所有类型的名称。内省是 GraphQL 规范的一部分,因此每个 GraphQL 服务器都应该能够开箱即用:您不需要显式添加任何功能。
- 使用Twilio JS客户端API时出现JWT令牌过期问题
- 只有在angular js中手动重新加载页面时,signaler-js客户端方法才会调用
- 如何将图像从 JS 客户端库附加到新的 Trello 卡
- 从Node.js客户端使用Aerospike LDT(大型数据类型)的任何方法
- 将 GraphQL 模式从非 JS 服务器公开给 JS 客户端
- 使用 Twilio JS 客户端,如何调用在 texbox 中输入的号码
- 让Pusher JS客户端在PhantomJS中工作
- Node.js客户端和服务器使用Telnet进行游戏
- Meteor JS:客户端没有从Mongo DB获取数据
- SignalR没有't达到JS客户端功能
- 如何将js客户端的图像保存到blobstore
- Strophe.js客户端连接到服务器,断开连接/超时
- Socket.IO Node.JS客户端显示变量
- Node.js客户端会话未创建req.session
- Node.js客户端请求挂起
- Node.js客户端vs.服务器-相同的代码不同的结果
- JSF ajax请求在与JS客户端验证相结合时不会被触发
- 使用angular js客户端对Python服务器进行rest调用的例子
- 预编译模板出现Dust.js客户端渲染问题
- SignalR JS客户端:向invoke方法传递参数