泪伤荡的编程指南 泪伤荡的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
  • 开发工具篇

    • idea设置

      • 配置篇
      • 快捷键篇
      • debug篇
      • 插件篇
    • 玩转Git

      • 基础知识梳理
      • Git配置相关操作
      • git修改已提交人的用户名和邮箱
      • git提交规范
      • 常见问题
    • Maven相关

      • Maven简介
      • Maven常用命令
      • 依赖管理
      • Maven生命周期与插件
      • Maven项目管理工具
    • Apifox使用小结
    • nvm使用小结
    • JMeter使用小记
  • 工具库篇

    • lombok工具库

      • lombok注解使用小结
      • Builder用法解析
      • 异常相关注解
    • EasyExcel小记

      • 工具类
      • 文件导入
      • 文件导出
    • 定时任务相关

      • 基础入门
      • SpringTask学习
      • Quartz学习
    • Hutool工具库

      • 图片压缩
    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • MP使用小记
    • Stream流技巧总结
    • 字符串处理最佳实践
    • SQL语句优化
    • 时间字段处理小记
    • Curl用法解析
      • 简介
      • 基础用法
      • 发送 GET 请求
      • 选项详解
      • 发送 POST 表单
      • 文件上传
      • 线上排查(检查网络)
        • ping(判断网络)
        • telnet(判断端口)
      • 用法示例
      • 学习参考
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 唯一索引和逻辑删除冲突解决方法
    • 正则表达式
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 日志记录相关
  • 工具类系列

    • 手写一个文件阅读器
    • 手写一个运行耗时计算器
    • 自定义实现Java Bean属性中列表元素格式校验注解及其实现
    • 父子工程项目搭建
    • 自制代码生成器
  • 随笔

    • HttpServletRequest知识小结
    • Spring MVC 项目构建流程
    • 虚拟机固定ip地址
    • 项目部署
    • 深入理解数组
    • IIS使用小记
    • From的两种类型解析
    • 开发疑惑
    • 开发小记
    • bug解决
  • 开发日常
  • 开发技巧篇
泪伤荡
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)
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

# 学习参考

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

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

Theme by Vdoing | Copyright © 2024-2025 泪伤荡 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式