当前位置: 首页 > news >正文

cURL:通过URL传输数据的命令行工具库介绍

文章目录

  • 1. 什么是 curl?
  • 2. 下载与安装 curl
  • 3. curl 的常见用法
    • 3.1 获取网页内容
    • 3.2 下载文件
    • 3.3 发送 POST 请求(带表单数据)
    • 3.4 发送带 JSON 的 POST 请求


1. 什么是 curl?

cURL(CommandLine URL)是非常强大的开源命令行工具库,用于通过URL传输数据,其功能可以简单地分为:向服务器发送请求(GET、POST、PUT、DELETE 等)、测试和调试 API 接口、下载文件或数据、模拟浏览器或其他客户端行为。curl最新稳定版本为8.13.0(发布于 2025-04-02)。

在这里插入图片描述

该工具库支持FTP、FTPS、HTTP、HTTPS、SMTP、Telnet、TFTP等协议,底层使用的是 libcurl库。curl的应用面非常广,包含但不限于汽车、电视机、路由器、打印机、手机、平板电脑、医疗设备、机顶盒等,全球几乎每个使用互联网的人每天都会使用 curl。

在这里插入图片描述

2. 下载与安装 curl

打开电脑的命令行,输入 curl --versioncurl -V,如果能返回 curl 的版本信息,则已安装 curl 工具。

在这里插入图片描述

这里以MacOS为例介绍如何安装curl,如果安装了 Homebrew工具,可以直接通过如下命令安装。

brew install curl

另一种方式是通过源码安装。curl 源码下载地址:https://curl.se/download.html。下相应的 curl-x.x.x.tar.gz 文件,解压后,将终端目录切换到相应的文件夹,运行命令 ./configure --prefix=/usr/local/curl设置安装目录,接着运行 make, sudo make install 编译和安装。

3. curl 的常见用法

本小节会给出几个案例演示curl常见的用法,在此之前线介绍下curl命令的一些参数及其含义:

-X:指定 HTTP 请求的方法,例如 curl -X POST $url
-d: 发送post请求数据,@file表示来自于文件
-o: 写文件,将服务器的响应保存成文件
-v: verbose,打印更详细日志
-s, --silent: 关闭一些提示输出,不输出错误和进度信息。
-L:跟随跳转链接

3.1 获取网页内容

直接在curl后接一个url地址,将会向该地址发送GET请求,如下命令,会向 https://example.com 发送一个 GET 请求,并在终端输出网页的 HTML 内容。

curl https://example.com

将响应内容保存到 result.json 文件:

curl -o result.json https://api.example.com/data

3.2 下载文件

-O 会使用原文件名保存文件。

curl -O https://example.com/file.zip

3.3 发送 POST 请求(带表单数据)

指定请求方法以及发送的信息。

curl -X POST -d "username=test&password=1234" https://example.com/login

3.4 发送带 JSON 的 POST 请求

curl -X POST -H "Content-Type: application/json" -d '{"name": "Alice"}' https://example.com/api

其中,-H 定义的是请求头内容,“Content-type: application/json” 表示向服务器声明发送的数据类型是 json 格式。

相关文章:

  • 51单片机引脚功能概述
  • QT5.14安装以及新建基础项目
  • 保持Word中插入图片的清晰度
  • Linux文件编程——read函数与lseek函数
  • 关于读写锁的一些理解
  • 使用 Comparator 和 Comparable 对集合排序:如何轻松排序 Java 集合?
  • Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据
  • Electron学习大纲
  • linux-进程信号的产生
  • 可编辑PPT | 企业数字底座:数据中台构建路径、方法和实践数据中台架构解决方案
  • 解锁遥感数据密码:DeepSeek、Python 与 OpenCV 的协同之力
  • Python教程(四)参数提取pymysql
  • LeetCode算法题:电话号码的字母组合
  • T2000云腾边缘计算盒子在数猪场景中的应用|YOLOv8+NodeRED
  • 软考 系统架构设计师系列知识点之杂项集萃(57)
  • VS2019 - 修正导出项目的工程模板的错误
  • UI自动化测试框架:PO 模式+数据驱动
  • 长度最小的子数组(leetcode)
  • 联想混合式AI的“动力总成”构建记
  • 【Redis 进阶】哨兵模式
  • 某博主遭勒索后自杀系自导自演,成都警方立案调查
  • 这一次,又被南昌“秀”到了
  • 言短意长|西湖大学首次“走出西湖”
  • 韩国总统大选候选人登记结束,共7人参选
  • 广西百色通报:极端强对流天气致墙体倒塌,3人遇难7人受伤
  • 国家主席习近平会见斯洛伐克总理菲佐