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 方法,如 POSTPUTDELETE 等。⭐️

    curl -X POST https://api.example.com/data
    
  • -d, --data <DATA>:发送 POST 数据。例如,发送 JSON 数据:⭐️

    curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://api.example.com/data
    
  • -H, --header <HEADER>:添加 HTTP 头信息。例如:⭐️

    curl -H "Authorization: Bearer token_value" https://example.com
    
  • -o, --output <FILE>:将响应内容保存到文件中,而不是输出到屏幕。

    curl -o output.html https://example.com
    
  • -I, --head:只获取 HTTP 头部信息,不下载响应主体内容。⭐️

    curl -I https://example.com
    
  • -v, --verbose:详细模式,展示请求和响应的所有详细信息,包括头信息、SSL 证书交换过程等。

    curl -v https://example.com
    
  • -L, --location:自动跟随服务器返回的 Location 头自动重定向。⭐️

    curl -L https://example.com/original-url
    

    如果 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
    

    这个命令会发出一个 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
    

    这个命令会在请求 https://example.com/protected-resource 时附带上 HTTP Basic Authentication 头,其中用户名为 myusername,密码为 mypassword

  • -k, --insecure:跳过服务器证书验证(仅在测试环境中谨慎使用)。

    curl -k https://self-signed.example.com
    

    在访问自签名证书或者证书不受信任的服务器时,可以使用 -k 参数跳过证书验证。但在生产环境中强烈不建议这样做,因为它会导致安全风险,容易受到中间人攻击。仅在测试或调试环境中临时使用。

发送 POST 表单

# POST 提交 表单数据
curl -F "username=hello"                \
     -F "password=123456"               \
     -F "head_image=@filepath.jpg"      \
     http://localhost/register

文件上传

curl -X PUT -T file.txt https://server/upload/path

这个命令用于上传 file.txt 文件到指定的服务器路径。

线上排查(检查网络)

容器内运行指令,需要 bash 指令进入命令行窗口

ping(判断网络)

  1. 功能:ping 命令通过发送 ICMP 回显请求报文,并监听对方返回的 ICMP 回显应答报文,来测试两个网络节点间的连通性。它可以用来判断网络层的可达性和估算网络延迟。
  2. 用途:
    • 验证远程主机是否在线和可访问
    • 测试网络连接的速度和稳定性,通过计算并报告往返时间(Round-Trip Time, RTT)。
    • 解析域名以获取其对应的 IP 地址。

telnet(判断端口)

  1. 功能:telnet 是基于 TCP 协议的远程登录和通信工具,允许用户建立与远程主机上的指定端口的连接。
  2. 格式:例如,telnet 127.0.0.1 1521 – 测试主机(127.0.0.1)的 1521 端口是否打开。
  3. 用途:
    • 远程连接到提供 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,因为 -d 已经暗示了这是一个 POST 请求)
curl -X POST -H "Content-Type: application/json" \
      -d '{"current": 1, "date": 20240320, "size": 10}' \
      http://localhost:9094/user/page

curl 有一个特性:

  • -d 选项被使用时,如果未明确指定 -X--request,它会默认使用 POST 方法。这是因为 -d 的存在通常意味着你想向服务器发送数据,这与 POST 请求的语义相匹配。

学习参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值