windows版本的curl工具,如何下载使用?特殊注意事项
发布于 作者:苏南大叔 来源:程序如此灵动~
目前苏南大叔在研究的项目内容是elastic search,各种教程里面最多的例子都是基于curl的语句。然而,windows系统里面默认情况下并没有curl命令。如果下载安装好windows版本的curl之后,网上各种elastic search教程里面的curl范例就能正常运行了么?这就是本文中要讨论的主要内容。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文主要讨论windows环境下,curl工具的具体使用情况。本文测试环境:win10,curl@7.82.0。以elastic search@8.1.2为龙套,探讨curl的几个特殊参数的使用。
意思是:您没安装elastic search的话,也没有问题,并不影响本文内容的理解。把elastic search理解为一个可以接收请求的服务器端就行了。
curl下载
windows版本的curl下载地址是:
- https://curl.se/windows/
- https://curl.se/windows/dl-7.82.0_4/curl-7.82.0_4-win64-mingw.zip 【截至发稿,最新的下载地址】
- https://curl.se/windows/curl-win64-latest.zip 【永远最新的地址】

下载后,依然是个纯绿色的压缩包,解压到合适位置。然后在系统path变量里面,添加到bin目录的条目即可。

curl的使用
因为苏南大叔下载这个curl的主要目的,就是配合elastic search的调用。所以,这里就还是以修改elastic用户的密码的需求为例,讨论curl的各个参数的使用。

可以参考文章:
- https://newsn.net/say/elastic-search-password.html
- https://www.elastic.co/guide/en/elasticsearch/reference/8.1/security-api-change-password.html
为了把用户elastic的密码设置为elastic,根据官方说明,相关的elastic search语句如下:
POST /_security/user/elastic/_password
{
"password" : "elastic"
}curl -X POST "localhost:9200/_security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "elastic"
}
'elasticsearch的数据交互是基于restful风格的,所以,必然有GET/POST/PUT/PATCH/DELETE这些变化,这些都是用-X参数指定的。
无法执行的官方范例
这个官方的命令在windows版本的curl这边是无法执行的。原因很多,慢慢讨论。先说基础的部分,elasticsearch默认情况下,是开启https的401认证的。那么,就一下子出来了三个待解决问题及解决方案:
| 问题 | 方案 |
|---|---|
| https:// | https://localhost:9200 |
| 证书无法识别 | -k |
401鉴权 | -u user:password |
这个时候,curl命令变为这样:
curl -k -u elastic:elastic -X POST "https://localhost:9200/_security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "elastic"
}
'windows下面的命令折行问题
在windows环境下,默认情况下,命令是不能折行的。也就是说上述命令会被断成几节执行。所以,合并成一行执行吧。
curl -k -u elastic:elastic -X POST "https://localhost:9200/_security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d'{"password" : "elastic"}'单引号双引号以及转义的问题
合并成一行之后,依然报错。最终的调整方案是:
- 不能用单引号,换成双引号
-d所代表的body部分,因为是个json,所以要符合json的标准,这里用转义符转移双引号。

最终得到的可以顺利执行的curl修改elastic serach密码的命令是:
curl -k -u elastic:elastic -d "{\"password\" : \"elastic\"}" -X POST "https://localhost:9200/_security/user/elastic/_password?pretty" -H "Content-Type: application/json"分成多行执行
默认情况下,命令是不能分多行执行的,其实如果想非要在windows的命令行下分几行执行的话,其实也可以。就是使用^符号进行连接,比如:
curl -k -u elastic:elastic -d "{\"password\" : \"elastic\"}" ^
-X POST "https://localhost:9200/_security/user/elastic/_password?pretty" ^
-H "Content-Type: application/json"这里依然是可以执行成功的。

相关文献
- https://curl.se/windows/
- https://newsn.net/say/elastic-search-password.html
- https://www.elastic.co/guide/en/elasticsearch/reference/8.1/security-api-change-password.html
综述
本文主要介绍了在windows环境下如何安装使用curl,同时对于如何对接elastic search做了有益探索。更多经常文章,请参考下面的链接: