【问题标题】:graphiql send as post body instead of query stringgraphiql 作为帖子正文而不是查询字符串发送
【发布时间】:2017-07-16 23:31:12
【问题描述】:

在节点上,我正在使用提供 GraphiQL UI 的 express-graphql 插件。

此实现中的 GraphiQL 始终将查询作为 GET 查询字符串发送。

但是,据我了解 GraphQL 和 express-graphql 文档,也应该可以在 POST 请求的正文中发送查询。

有没有办法让 GraphiQL(即浏览器 IDE)在 POST 正文中发送查询?

2017 年 2 月 26 日附录:

我想我自己找到了我需要知道的东西。

无论出于何种原因,我的查询字符串中都有查询。像这样:

[myhostname]?query={users{[myfields]}}

我忽略了这一点。

正如 express-graphql 文档指出的那样:

如果在查询字符串中没有找到,它将在 POST 请求中查找 身体。

这意味着:如果在查询字符串中找到,它将在请求正文中查找。

因此它被视为 GET 请求。

所以我需要做的就是从查询参数中清除我的 URL,并且请求以 POST 正文到达。

这基本上就是我需要知道的全部内容。

所以这确实是一个草率的错误,我没有正确查看 URL,即没有注意到查询字符串中有查询。

【问题讨论】:

    标签: node.js http-post graphql graphql-js


    【解决方案1】:

    GraphiQL 是一个React 组件,可以完全自定义数据发送到服务器的方式 (fetcher)。 express-graphql 中间件基本上是从 cdn 中提取转译后的 GraphiQL 代码,并将包含它的静态 html 页面发送到客户端:https://github.com/graphql/express-graphql/blob/master/src/renderGraphiQL.js

    有了这些知识,你基本上可以在单独的路由上做同样的事情,并从express-graphql关闭内置的 GraphiQL

    另外请查看 GraphiQL 文档:https://github.com/graphql/graphiql!

    【讨论】:

    • 我不确定我是否理解您的回答。但根据我希望理解的内容,让我重新提出我的问题:如何自定义 GraphiQL,使其将我的数据作为 POST 正文而不是 GET 查询字符串发送?
    • 检查答案中的链接。它向您展示了express-graphql 的完整源代码。事实上,如果您查看 GraphiQL 存储库中的第一个示例,它会准确地向您展示如何将其作为发布请求进行:github.com/graphql/graphiql
    • @p0k8_ GraphiQL 就是这样设计的。事实上,获取数据的fetcher 甚至不必通过 HTTP,您可以使用完全不同的协议。
    • @p0k9_ 是的。 GraphQL 和 GraphiQL 都不限于解析查询字符串甚至 HTTP。建立在它之上的工具,比如 express-graphql 可能。
    • 很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2014-06-29
    • 2014-03-16
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多