curl 是一个常用的命令行工具,用于在命令行或脚本中发起网络请求。它支持多种协议,包括 HTTP、HTTPS、FTP 等,可以用来下载或上传数据。简单来说,curl 可以用来模拟浏览器向服务器发送请求,获取网页内容、API 数据等。例如,你可以使用 curl 命令来检查一个网页是否可达,或者从一个 API 接口获取数据。
Curl提供了丰富的参数以满足各种传输需求,以下是一些常见的curl参数及其用途:
-X/--request [command]:
指定请求的命令,如GET、POST、PUT等。如果不带-X直接请求,则默认为GET请求。
-H/--header [string]:
添加自定义头部到请求中。常见的请求头如token、userId、Content-Type、Authorization等都可以通过此参数添加。
-d/--data [data]:
发送POST请求的数据。数据默认是application/x-www-form-urlencoded格式,但也可以通过设置Content-Type为application/json来发送JSON格式的数据。
-v/--verbose:
让curl提供更多信息,用于调试。会显示请求的详细过程,包括请求头、响应头和响应体内容。
-o/--output [file]:
将响应内容保存到文件中,而不是打印到标准输出。
-L/--location:
告诉curl当服务器返回的是重定向(例如301或302)时,跟随重定向到新的URL。
-A/--user-agent [string]:
在请求中设置User-Agent。
-b/--cookie [string/file]:
传递cookie到服务器,或从文件中读取cookie数据。
-c/--cookie-jar [file]:
把服务器发送的所有cookies写入这个文件。
-k/--insecure:
允许curl执行“不安全”的SSL连接和传输,即跳过SSL证书验证。这在测试自签名证书的开发环境中可能会用到。
-I/--head:
只获取文档的HTTP头部,不获取响应体内容。
-s/--silent:
静默模式,不输出任何东西。
-u/--user [user]:
使用指定的用户和密码进行认证。
-P/--port [port]:
指定连接使用的端口号。
-T/--upload-file [file]:
上传文件到FTP服务器。
-G/--get:
构造URL的查询字符串。如果省略-G,会发出一个POST请求。
-#/--progress-bar:
使用进度条显示文件传输进度。
这些参数可以单独使用,也可以组合使用,以满足不同的数据传输需求。例如,发送一个带有自定义请求头和JSON数据体的POST请求,可以使用以下命令:
curl -X POST
-H "Content-Type: application/json"
-H "Authorization: Bearer TOKEN"
-d '{"key":"value"}'
https://api.example.com/resource
以上命令向https://api.example.com/resource发送了一个POST请求,请求头中包含了Content-Type和Authorization,请求体是JSON格式的数据。