文件中cURL GET请求和参数

7xllpg7q  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(159)

有没有办法在文件中包含参数,而不是像

curl -X GET -G 'http://rest_url' -d 'param1=value1' -d 'param2=value2' -d 'paramX=valueX'

为了能具有

curl -X GET -G 'http://rest_url' -d @file.txt

我已将该文件作为

'param1=value1' 
'param2=value2' 
'paramX=valueX'

但那不起作用。

mrfwxfqh

mrfwxfqh1#

是的,你可以在一个文件中完成这些操作,但是它们会以一个-d选项的形式出现,这样curl就不会在参数之间插入"&“符号,所以你必须写一个文件来包含这些数据,如下所示:

param1=value1&param2=value2

curl -G 'http://rest_url' -d @file.txt

如果您希望像问题中那样用换行符分隔参数,我建议使用一个小的shell脚本来解决这个问题:

#!/bin/sh
while read param; do
  args="$args -d $param";
done
curl -G $args http://example.com

并像这样使用它:

script.sh < file.txt
vfh0ocws

vfh0ocws2#

正如@daniel-stenbeng所写的,关键是使用-G强制GET请求,并为所有查询字符串参数使用单个-d。避免编写另一个shell脚本的一种方法是使-d从STDIN(-d @-)读取,然后将参数的连接字符串提供给STDIN。
一个简单的方法是使用paste命令进行连接:

paste -s -d'&' file.txt | curl -G http://example.com -d @-

相关问题