curl查询到graphql端点的多行“ --data”格式正确吗?

时间:2018-11-25 16:07:40

标签: json curl graphql

我正在通过curl将“ --data”传递给GraphqQL API端点。

我希望能够以“预设”格式传递数据,例如就像在GraphiQL浏览器中一样,

{
  alpha {
    param1
    param2
  }
}

自动取款机,我在数据内部 的格式-即re:行返回-处理不正确。

此单行字符串形式有效

curl \
 -H 'content-type: application/json' \
 -X POST /path/to/graphql/api/endpoint \
 --data '{ "query":
           "query { alpha {param1, param2} } "
         }'

此“美化”版本不

curl \
 -H 'content-type: application/json' \
 -X POST /path/to/graphql/api/endpoint \
 --data '{ "query":
           "query {
              alpha {
                param1
                param2
              }
            } "
         }'

传递第二种形式的正确语法是什么?

我猜是引号/转义的组合吗?

2 个答案:

答案 0 :(得分:1)

JSON字符串中不允许使用换行符。 (请参阅RFC 8259 §7,其中指出必须转义控制字符。)您可以将换行符转换为\n,但这有点笨拙:

curl \
 -H 'content-type: application/json' \
 -X POST /path/to/graphql/api/endpoint \
 --data '{ "query":
           "query {\n  alpha {\n    param1\n    param2\n  }\n} "
         }'

由于JSON查询的结构非常好,因此使用专用工具提交GraphQL查询似乎更好用:GraphiQL的独立版本是可以的默认设置,或者您有喜欢的脚本语言有了一个合理的HTTP客户端,用它写东西就很容易了。

答案 1 :(得分:0)

与此类似:

QUERY='{ "query":
           "query {
              alpha {
                param1
                param2
              }
            } "
         }'
curl \
 -H 'content-type: application/json' \
 -X POST /path/to/graphql/api/endpoint \
 --data "$(echo $QUERY)"