curl 使用:命令行中的 HTTP 客户端

简介: `curl` 是命令行神器,用于与服务器交互,支持HTTP、HTTPS、FTP等协议。本文教你如何用它做POST请求(-d/--data)、GET请求(-G/-d)、JSON请求(-H 'Content-Type: application/json')和文件上传(-F)。学会这些,轻松测试API、自动化任务。现在就动手试试吧!

在日常的软件开发和网络管理工作中,curl 是一个我们经常会使用到的命令行工具。它支持多种协议,包括 HTTP、HTTPS、FTP 等,用于发送和接收数据。

本文将通过简单易懂的语言,带你快速掌握 curl 在发送各种类型请求时的使用方法。

curl 基本概念

curl 是一个强大的命令行工具,用于在命令行或者脚本中与服务器交互。它支持多种协议,能够通过 URL 等参数发送请求,并获取或发送数据。适合用于测试 API、自动化任务、数据检索等场景。

发送 POST 请求

在使用 curl 发送 POST 请求时,常用 -d--data 参数来指定请求体的内容。

示例


# 发送 POST 请求,加入 -d 参数后,会自动转为 POST 方法,因此可以省略 -X POST 参数
curl -X POST www.baidu.com -d 'a=1&b=2'
# 或者直接使用 curl www.baidu.com -d 'a=1&b=2'

这里 -d 参数后跟着的是我们要发送的数据。这种方式简洁明了,非常适合测试简单的表单数据或 API 接口。

发送 GET 请求

发送 GET 请求时,我们可以通过在 URL 后直接加查询字符串或使用 -G 参数配合 -d 来构造查询字符串。

示例


# 发送 GET 请求,-G 参数用来构造 URL 的查询字符串
curl https://google.com/search  -G -d 'q=kitties&count=20'
# 或者直接使用完整的 URL
curl 'https://google.com/search?q=kitties&count=20'

这两种方式可以根据个人喜好和场景需求来选择使用,效果是相同的。

发送 JSON 请求

在现代的 Web 开发中,JSON 是最常见的数据交换格式之一。curl 通过 -H 参数添加 HTTP 头,其中 Content-Type: application/json 表明发送的数据类型为 JSON。

示例


curl -H 'Content-Type: application/json' -X POST https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend\?access_token\=ACCESS_TOKEN  -d '{
  "begin_date" : "20210328",
  "end_date" : "20210328"
}
'

这里使用 -H 添加了请求头,-X POST 指定了请求方法,虽然在这个场景下,由于使用了 -d 参数,-X POST 可以省略。

上传文件

curl 也支持文件上传功能,常通过 -F 参数实现。

示例


# 注意文件路径前需要加上 @ 符号
curl -X POST http://127.0.0.1:8000/upload/file  -F file=@/path/to/your/file/img1.jpeg -F type=1

在这个例子中,-F 参数指定了我们想要上传的文件,文件路径前必须加上 @ 符号,表示这后面是一个文件。

下载图片

使用 curl 可以方便地下载网络上的图片或文件:

示例

curl -X POST 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=abc' \
-H 'Content-Type: application/json' -H 'accept: image/jpeg' \
--data-raw '{
    "scene": "userId=2&activityId=5",
    "page": "pages/index/index"
}' > abc.jpeg

结语

通过这篇文章,相信你已经对 curl 的用法有了初步的了解。它是一个强大且灵活的工具,适用于多种场景。掌握了 curl,你便能在命令行下轻松与世界各地的服务器交流,实现数据的发送和接收。

不妨现在就开始尝试使用它,解锁更多可能吧!

相关文章
|
3月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
238 61
|
1月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
3月前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
89 14
|
5月前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
418 30
|
6月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
628 29
|
6月前
|
API
掌握 HTTP 请求的艺术:理解 cURL GET 语法
掌握 cURL GET 请求的语法和使用方法是 Web 开发和测试中的基本技能。通过灵活运用 cURL 提供的各种选项,可以高效地与 API 进行交互、调试网络请求,并自动化日常任务。希望本文能帮助读者更好地理解和使用 cURL,提高工作效率和代码质量。
363 7
|
11月前
使用Netty实现文件传输的HTTP服务器和客户端
本文通过详细的代码示例,展示了如何使用Netty框架实现一个文件传输的HTTP服务器和客户端,包括服务端的文件处理和客户端的文件请求与接收。
245 1
使用Netty实现文件传输的HTTP服务器和客户端
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
248 1
|
Go 开发者
golang的http客户端封装
golang的http客户端封装
353 0
|
数据采集 Java API
Java HTTP客户端工具的演变之路
Java HTTP客户端工具的演变之路