我正在通过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
}
} "
}'
传递第二种形式的正确语法是什么?
我猜是引号/转义的组合吗?
答案 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)"