沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

  • 工具库篇

  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • 字符串处理最佳实践
    • 时间字段处理小记
    • Curl用法解析
      • 简介
      • 基础用法
      • 发送 GET 请求
      • 选项详解
      • 发送 POST 表单
      • 文件上传
      • 线上排查(检查网络)
        • ping(判断网络)
        • telnet(判断端口)
      • 用法示例
      • 学习参考
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 正则表达式
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 实时汇率获取
    • System-getProperty方法获取属性
    • 文件url转Base64编码
  • 工具类系列

  • 随笔

  • 开发日常
  • 开发技巧篇
沉梦听雨
2024-03-20
目录

Curl用法解析

# Curl 用法解析

# 简介

Curl 是一个强大的命令行工具,主要用于从服务器发送 HTTP 请求并获取数据。它广泛应用于调试 RESTful API、文件上传下载、模拟用户交互等多种场景。下面是一些基本用法及常见参数的分析:

# 基础用法

curl [options] [URL]
1

其中最基本的形式就是指定一个 URL,curl 会向该 URL 发送一个 HTTP GET 请求并显示响应内容。

# 发送 GET 请求

curl https://example.com
1

这个命令会向 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
1
2
3
4
5

# 文件上传

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

这个命令用于上传 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14

curl 有一个特性:

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

# 学习参考

  • telnet ip 端口 命令_检测网络是否正常(ping,Telnet,tracert以及tnsping)-CSDN博客 (opens new window)
  • curl命令用法-CSDN博客 (opens new window)
  • curl - Tutorial (opens new window)
上次更新: 2025/1/10 18:07:45
时间字段处理小记
列表分页的两种实现方案

← 时间字段处理小记 列表分页的两种实现方案→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式