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



我通过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)"

最新更新