curl发送post请求时payload带参数引用

Table of Contents

背景

很多web页面F12抓包导出接口到curl bash脚本进行循环调用时,需要给post请求时的payload传入可变参数,遇到了一些坑,在此记录下。

curl发送post请求时payload带参数引用

正常的curl请求,payload是json格式,所以我们在拼接的时候要按照这个格式。
例如,原始payload如下,

{"taskName":"deploy-task-1712447852127"}

未使用参数引擎的完整请求命令如下,

curl 'http://xx.xx/xx/xx' -d '{"taskName":"deploy-task-1712447852127"}'

如果payload的时间戳会自动变化,就需要拼接payload,完整的请求命令如下,

ts=$(date +%s)000
curl 'http://xx.xx/xx/xx' -d "{\"taskName\":\"deploy-task-${ts}\"}"

注意:
1、整个payload要用双引号括起来;
2、payload里的其他特殊字符使用\进行转义,如果需要批量转义payload里的双引号,可以使用如下脚本,

sed -r -e 's/"/\\"/g' f.txt