我通过curl将"--data"传递到GraphqQL API端点。
我希望能够以"pretified"的形式传递数据,例如在GraphiQL浏览器、中
{
alpha {
param1
param2
}
}
Atm,我在中格式化数据——即re:line返回——没有得到正确处理。
这种单行字符串形式有效,
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
}
} "
}'
传递第二个表单的正确语法是什么?
我猜是引用/转义的组合?
JSON字符串中不允许使用换行符。(请参阅RFC 8259§7,其中规定必须转义控制字符。(您可以将换行符转换为n
,但这有点笨拙:
curl
-H 'content-type: application/json'
-X POST /path/to/graphql/api/endpoint
--data '{ "query":
"query {n alpha {n param1n param2n }n} "
}'
由于JSON查询的结构非常好,因此使用专用工具提交GraphQL查询似乎效果更好:GraphiQL的独立版本是一个不错的默认版本,或者如果你有一个喜欢的脚本语言和一个合理的HTTP客户端,那么用它写东西就足够容易了。
类似以下内容:
QUERY='{ "query":
"query {
alpha {
param1
param2
}
} "
}'
curl
-H 'content-type: application/json'
-X POST /path/to/graphql/api/endpoint
--data "$(echo $QUERY)"