0%

CURL的 --url-query的用法

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会自动添加&符号。

参考链接