cURL 配置文件 (-k / --config) JSON 换行符

dip*_*rus 5 curl heredoc character-encoding

我正在尝试构建一个在-d/--data正文中包含换行符的 cURL 配置文件,但它似乎与在命令行上的工作方式不同。

在命令行上,我可以运行:

curl -XPUT 'http://localhost:9200/mytype/_search' -d '{
  "query": {
    "match_all": {}
  }
}'
Run Code Online (Sandbox Code Playgroud)

并且数据体被正确传递。

但是,如果我尝试在 curl -K/--config文件中执行此操作,则它不起作用。

测试卷曲:

-XPUT
-d '{
  "query": {
    "match_all": {}
  }
}'
Run Code Online (Sandbox Code Playgroud)

然后运行curl -K test.curl 'http://localhost:9200/mytype/_search,我提交数据的端点无法解析。如果我将所有数据放在一行上并使用双引号,我可以让它工作,但这会破坏我正在寻找的一些易读性。

test2.curl 有效

-XPUT
-d "{\"query\": {\"match_all\": {} } }"
Run Code Online (Sandbox Code Playgroud)

我也试图复制这个heredoc答案:How to send line break with curl? 但同样它在--config文件中不起作用

小智 2

而不是-d "{\"query\": {\"match_all\": {} } }"你可以做data-binary = "@requestbody.json"

然后在 requestbody.json 中:

{
  "query": {
    "match_all": {}
  }
}
Run Code Online (Sandbox Code Playgroud)