使用GET
我需要通过bash脚本中的命令行将json
值传递给URL。
这有效:
curl -i "http://MYURL:8080/admin/rest_api/api?api=trigger_dag&dag_id=spark_submit&conf=\{\"filename\":\"myfile.csv\"\}"
如果我想扩展json
值,我宁愿通过URL参数传递变量以提高可读性。 Somethig喜欢......但这似乎不能正常工作。
generate_post_data =
{
"filename": "myfile.csv"
}
curl -i "http://MYURL:8080/admin/rest_api/api?api=trigger_dag&dag_id=spark_submit&conf=${generate_post_data}"
答案 0 :(得分:2)
您需要正确设置变量,您应该使用--data-urlencode
选项对其进行网址编码。
#!/bin/bash
generate_post_data="filename=myfile.csv"
curl -G "http://MYURL:8080/admin/rest_api/api?api=trigger_dag&dag_id=spark_submit" --data-urlencode $generate_post_data
从联系手册:
--data-urlencode <data>
(HTTP)这会发布数据,类似于其他-d, - data选项 这是执行URL编码的例外。
要符合CGI,该部分应以名称开头 通过分隔符和内容规范。部分可以 使用以下语法之一传递给curl:
有关详细信息,您可以使用man curl
然后/data-urlencode
跳转到该部分。