You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Express服务器通过Apollo实现GraphQL时遇GET query missing错误

解决“GET query missing”错误的方案

错误原因分析

你遇到的“GET query missing”错误是因为/graphql端点的默认处理逻辑:

  • graphqlExpress中间件主要接收POST请求(查询内容放在请求体中)
  • 如果用GET请求访问/graphql,必须在URL里显式带上query参数,服务器才能知道要执行什么查询。而你直接在浏览器地址栏输入http://localhost:7700/graphql时,浏览器发送的是不带任何查询参数的GET请求,所以触发了这个报错。

快速解决方法

看你的server.js代码,已经正确配置了GraphiQL(GraphQL可视化调试界面),你应该访问的是:

http://localhost:7700/graphiql

这个界面会自动帮你处理请求的发送逻辑,不需要手动拼接参数。你可以在左侧输入查询语句,点击运行就能看到结果,完全适配你现有配置。

(可选)通过GET请求直接访问/graphql的方法

如果确实需要用GET请求调用/graphql端点,你需要在URL中添加query参数。比如假设你的schema里有一个hello字段,就可以这样访问:

http://localhost:7700/graphql?query={hello}

{hello}替换成你实际要执行的GraphQL查询语句即可。

确认你的配置正确性

你的server.js配置是完全没问题的:

  • server.use('/graphql', bodyParser.json(), graphqlExpress({ schema })) 正确配置了GraphQL API端点
  • server.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' })) 正确关联了GraphiQL界面和API端点,所以访问/graphiql就能正常使用调试工具。

内容的提问来源于stack exchange,提问作者BugBuddy

火山引擎 最新活动