Postgraphile启动正常 访问/graphql报Only POST requests are allowed错误如何解决
问题原因
该报错是GraphQL API端点的默认规则导致:/graphql 端点默认仅接收携带查询参数的POST请求,你直接在浏览器地址栏输入地址访问时,浏览器默认发起的是GET请求,不符合接口要求,因此触发报错。
解决方案
- 若只是要调试查询,直接访问启动日志中提供的官方GraphiQL可视化调试界面即可:
http://localhost:5000/graphiql,这个页面内置IDE,可以直接在界面内编写GraphQL查询、发送请求、查看返回结果,无需自行构造POST请求。 - 若需要直接调用
/graphql接口,需构造POST请求,请求头设置Content-Type: application/json,请求体为JSON格式的GraphQL查询内容,示例curl命令如下:
curl -X POST http://localhost:5000/graphql \ -H "Content-Type: application/json" \ -d '{"query": "{ yourQueryName { field1 field2 } }"}'
- 若确实需要让
/graphql端点支持GET请求,启动postgraphile时添加--allow-query-on-get参数即可,启动命令修改为:npx postgraphile -c "postgres:///reviewapp" --allow-query-on-get
开启后GET请求可通过url参数query传递GraphQL查询内容,比如直接访问http://localhost:5000/graphql?query={__schema{types{name}}}即可正常拿到返回结果。
内容的提问来源于stack exchange,提问作者Evanss
相关产品推荐
相关产品推荐

