Curl用法解析
# Curl 用法解析
# 简介
Curl 是一个强大的命令行工具,主要用于从服务器发送 HTTP 请求并获取数据。它广泛应用于调试 RESTful API、文件上传下载、模拟用户交互等多种场景。下面是一些基本用法及常见参数的分析:
# 基础用法
curl [options] [URL]
其中最基本的形式就是指定一个 URL,curl 会向该 URL 发送一个 HTTP GET 请求并显示响应内容。
# 发送 GET 请求
curl https://example.com
这个命令会向 https://example.com
发送 GET 请求,并打印服务器返回的响应内容。
# 选项详解
-X, --request <METHOD>
:指定 HTTP 方法,如POST
、PUT
、DELETE
等。⭐️curl -X POST https://api.example.com/data
1-d, --data <DATA>
:发送 POST 数据。例如,发送 JSON 数据:⭐️curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://api.example.com/data
1-H, --header <HEADER>
:添加 HTTP 头信息。例如:⭐️curl -H "Authorization: Bearer token_value" https://example.com
1-o, --output <FILE>
:将响应内容保存到文件中,而不是输出到屏幕。curl -o output.html https://example.com
1-I, --head
:只获取 HTTP 头部信息,不下载响应主体内容。⭐️curl -I https://example.com
1-v, --verbose
:详细模式,展示请求和响应的所有详细信息,包括头信息、SSL 证书交换过程等。curl -v https://example.com
1-L, --location
:自动跟随服务器返回的 Location 头自动重定向。⭐️curl -L https://example.com/original-url
1如果
https://example.com/original-url
返回一个 3XX 重定向响应,curl 会自动跟随重定向的 URL,并显示最终的目标页面内容。-w, --write-out <FORMAT>
:自定义输出格式,可以用于统计请求的耗时等信息。curl -w "%{http_code} %{time_total}\n" -o /dev/null https://example.com
1这个命令会发出一个 GET 请求到
https://example.com
,但不显示响应内容(通过-o /dev/null
实现)。-w
参数后面的%{http_code}
表示输出 HTTP 响应码,%{time_total}
表示输出请求总耗时(包括 DNS 解析、TCP 连接、TLS 握手以及实际传输时间)。-u, --user <USER[:PASSWORD]>
:提供 HTTP 基本认证信息。curl -u myusername:mypassword https://example.com/protected-resource
1这个命令会在请求
https://example.com/protected-resource
时附带上 HTTP Basic Authentication 头,其中用户名为myusername
,密码为mypassword
。-k, --insecure
:跳过服务器证书验证(仅在测试环境中谨慎使用)。curl -k https://self-signed.example.com
1在访问自签名证书或者证书不受信任的服务器时,可以使用
-k
参数跳过证书验证。但在生产环境中强烈不建议这样做,因为它会导致安全风险,容易受到中间人攻击。仅在测试或调试环境中临时使用。
# 发送 POST 表单
# POST 提交 表单数据
curl -F "username=hello" \
-F "password=123456" \
-F "head_image=@filepath.jpg" \
http://localhost/register
2
3
4
5
# 文件上传
curl -X PUT -T file.txt https://server/upload/path
这个命令用于上传 file.txt
文件到指定的服务器路径。
# 线上排查(检查网络)
容器内运行指令,需要
bash
指令进入命令行窗口
# ping(判断网络)
- 功能:ping 命令通过发送 ICMP 回显请求报文,并监听对方返回的 ICMP 回显应答报文,来测试两个网络节点间的连通性。它可以用来判断网络层的可达性和估算网络延迟。
- 用途:
- 验证远程主机是否在线和可访问。
- 测试网络连接的速度和稳定性,通过计算并报告往返时间(Round-Trip Time, RTT)。
- 解析域名以获取其对应的 IP 地址。
# telnet(判断端口)
- 功能:telnet 是基于 TCP 协议的远程登录和通信工具,允许用户建立与远程主机上的指定端口的连接。
- 格式:例如,telnet 127.0.0.1 1521 -- 测试主机(127.0.0.1)的 1521 端口是否打开。
- 用途:
- 远程连接到提供 telnet 服务的主机,进行命令行交互式的管理操作。
- 测试网络服务端口是否开放:通过尝试连接到远程主机的特定端口(如 80 端口用于 HTTP 服务,22 端口用于 SSH 服务),可以验证该端口是否接受连接请求,从而确认服务器的服务状态。
- 验证防火墙规则设置是否正确:如果 telnet 到某个端口失败,则可能是由于防火墙阻止了连接,或者是目标主机没有运行相应的服务。
总结来说,在线上排查时,
ping
主要用来快速验证网络连通性和响应速度,而telnet
则更侧重于检查特定网络服务的可用性,尤其是基于 TCP 协议的服务端口。
# 用法示例
# 写法一
curl -X POST --location "http://localhost:9094/user/page" \
-H "Content-Type: application/json" \
-H "x-user-id: 1" \
-d '{
"current": 1,
"date": 20240320,
"size": 20
}'
# 写法二(可省略 -X POST)
curl -X POST -H "Content-Type: application/json" \
-d '{"current": 1, "date": 20240320, "size": 10}' \
http://localhost:9094/user/page
2
3
4
5
6
7
8
9
10
11
12
13
14