卷曲获取请求参数列表太长

时间:2016-11-18 06:07:06

标签: bash shell parsing unix curl

我需要来自服务的GET数据。我正在传递一堆ID。

ID存储在以逗号分隔的文件中

示例:cat id_file

1,2,3,4,5,6,7,8,9,10,.....10000.

文件中有数千个ID。

在我的shell脚本中,我使用

id_list=$(cat id_file)

curl -H "Authorization: Bearer $token" -X GET "http://prk.xyx.com/tpt/abc/v2/dce_info?Id=$id_list&mpId=0" > op_data.json

curl命令失败,错误为"/usr/bin/curl: Argument list too long".

现在卷曲POST我们可以指定@filename。我们可以为获取请求做些什么吗?

2 个答案:

答案 0 :(得分:5)

您可以选择从“配置文件”中读取所有选项和URL,而不是使用-K从命令行读取,这将完全消除长度限制。如果需要,您还可以从stdin读取“配置文件”,因此在编写脚本时,实际上不需要为此创建临时文件。

另请参阅免费卷曲书中的config file部分。

答案 1 :(得分:-1)

如果可能你可以将数据传递给Json,这会使你的请求加载一些比较简单的整个数组

curl -X POST -H "Content-Type: application/json" -d @- "$HOST" <<CURL_DATA
{ "data": "$DATA" }
CURL_DATA