Issue description
use whole request body to parse graphql will get parse error.
graphql request body is json , example :{"query":"query{getUser{name age}}","variables":null}, not query{getUser{name age}}
Environment
- apisix version (cmd:
apisix version): apache/apisix:2.12.0-alpine
- OS (cmd:
uname -a): docker
- OpenResty / Nginx version (cmd:
nginx -V or openresty -V): null
- etcd version, if have (cmd: run
curl http://127.0.0.1:9090/v1/server_info to get the info from server-info API): bitnami/etcd:3.4.15
- apisix-dashboard version, if have:
apache/apisix-dashboard:2.10.1-alpine
- the plugin runner version, if the issue is about a plugin runner (cmd: depended on the kind of runner):
- luarocks version, if the issue is about installation (cmd:
luarocks --version):
Steps to reproduce
- define graphql
query {
getUser:User
}
type User{
name:String
age:String
}
- add route
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '
{
"methods": ["POST"],
"uri": "/graphql",
"vars": [
["graphql_operation", "==", "query"],
["graphql_name", "==", "getUser"]
],
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
- perform graphql request by curl
curl 'http://127.0.0.1:9080/graphql' \
-H 'Content-Type: text/plain;charset=UTF-8' \
-H 'Accept: */*' \
--data-raw '{"query":"query getUser{getUser{name age}}","variables":null}' \
--compressed
Actual result
HTTP/1.1 404 Not Found
Date: Tue, 08 Feb 2022 07:39:16 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
{
"error_msg": "404 Route Not Found"
}
Error log
2022/02/08 07:39:16 [error] 45#45: *1085159 [lua] ctx.lua:80: get_parsed_graphql(): failed to parse graphql: Syntax error near line 1 body:
Expected result
success
Issue description
use whole request body to parse graphql will get parse error.
graphql request body is json , example :
{"query":"query{getUser{name age}}","variables":null}, notquery{getUser{name age}}Environment
apisix version):apache/apisix:2.12.0-alpineuname -a):dockernginx -Voropenresty -V): nullcurl http://127.0.0.1:9090/v1/server_infoto get the info from server-info API):bitnami/etcd:3.4.15apache/apisix-dashboard:2.10.1-alpineluarocks --version):Steps to reproduce
Actual result
HTTP/1.1 404 Not Found
Date: Tue, 08 Feb 2022 07:39:16 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
{
"error_msg": "404 Route Not Found"
}
Error log
2022/02/08 07:39:16 [error] 45#45: *1085159 [lua] ctx.lua:80: get_parsed_graphql(): failed to parse graphql: Syntax error near line 1 body:
Expected result
success