CURL的 –url-query的用法
背景
2022年12月21日发布的curl 7.87.0版本中,新增了–url-query参数,详见commit。
在此之前,如果要使用post方法发送数据,可以使用-d,将数据包装成body发送出去。
1 | curl -d name=mrsmith -d color=blue https://example.com |
如果转变为GET方式,可以使用-G/–get参数,会自动将参数转变为get的query的形式,如
1 | curl -G -d name=mrsmith -d color=blue https://example.com |
将URL转为:
1 | https://example.com/?name=mrsmith&color=blue |
但是,如果使用POST的方式,既要携带body,又要使用query参数呢? 就需要手动构建带有query参数的url,使用-d携带body。
–url-query就是来解决这个问题的。
简单的例子
1 | curl -d name=mrsmith -d color=blue --url-query name=mrsmith --url-query color=blue https://example.com |
基本语法
–url-query [data], [data]需要符合以下用法
说明 | |
---|---|
content | 会对数据进行url-encode编码发送,但是需要注意的是,其中不能包含=或@符号,这两个符有特殊用途 |
=content | 会对数据进行url-encode编码后发送 |
name=content | 会对数据进行url-encode编码后发送 |
@filename | 会从指定的文件总加载数据,对数据进行url-encode编码,并通过post进行发送 |
name@filename | 将会总给定的文件中加载数据,对数据进行url-encode编码,并通过post进行发送。最终的数据结构是 name=urlencoded-file-content。 |
+content | 不进行url-encode编码,以原始数据传送 |
对于多个–url-query,curl会自动添加&符号。