21 个 curl 命令练习
创始人
2024-03-02 04:08:12
0

最近,我对人们如何学习新事物感兴趣。我正在读 Kathy Sierra 的好书《Badass: Making Users Awesome》,它探讨了有关“刻意练习”的想法。这个想法是,你找到一个可以用三节 45 分钟课程内能够学会的小技能,并专注于学习这项小技能。因此,作为一项练习,我尝试考虑一项能够在三节 45 分钟课程内学会的计算机技能。

我认为使用 curl 构造 HTTP 请求也许就是这样的一项技能,所以这里有一些 curl 练习作为实验!

什么是 curl ?

curl 是用于构造 HTTP 请求的命令行工具。我喜欢使用 curl,因为它能够很轻松地测试服务器或 API 的行为是否符合预期,但是刚开始接触它的时候会让你感到一些困惑!

下面是一幅解释 curl 常用命令行参数的漫画 (在我的 Bite Size Networking 杂志的第 6 页)。

熟能生巧

对于任何命令行工具,我认为熟练使用是很有帮助的,能够做到只输入必要的命令真是太好了。例如,最近我在测试 Gumroad API,我只需要输入:

curl https://api.gumroad.com/v2/sales \
                         -d "access_token=" \
                         -X GET  -d "before=2016-09-03"

就能从命令行中得到想要的结果。

21 个 curl 练习

这些练习是用来理解如何使用 curl 构造不同种类的 HTTP 请求的,它们是故意有点重复的,基本上包含了我需要 curl 做的任何事情。

为了简单起见,我们将对 https://httpbin.org 发起一系列 HTTP 请求,httpbin 接受 HTTP 请求,然后在响应中回显你所发起的 HTTP 请求。

  1. 请求 https://httpbin.org
  2. 请求 https://httpbin.org/anything,它将会解析你发起的请求,并且在响应中回显。curl 默认发起的是 GET 请求
  3. https://httpbin.org/anything 发起 GET 请求
  4. https://httpbin.org/anything 发起 GET 请求,但是这次需要添加一些查询参数(设置 value=panda
  5. 请求 Google 的 robots.txt 文件 (www.google.com/robots.txt)
  6. https://httpbin.org/anything 发起 GET 请求,并且设置请求头为 User-Agent: elephant
  7. https://httpbin.org/anything 发起 DELETE 请求
  8. 请求 https://httpbin.org/anything 并获取响应头信息
  9. https://httpbin.com/anything 发起请求体为 JSON {"value": "panda"} 的 POST 请求
  10. 发起与上一次相同的 POST 请求,但是这次要把请求头中的 Content-Type 字段设置成 application/json(因为 POST 请求需要一个与请求体相匹配的 Content-Type 请求头字段)。查看响应体中的 json 字段,对比上一次得到的响应体
  11. https://httpbin.org/anything 发起 GET 请求,并且在请求头中设置 Accept-Encoding: gzip(将会发生什么?为什么会这样?)
  12. 将一些 JSON 放在文件中,然后向 https://httpbin.org/anything 发起请求体为该文件的 POST 请求
  13. 设置请求头为 Accept: image/png 并且向 https://httpbin.org/image 发起请求,将输出保存为 PNG 文件,然后使用图片浏览器打开。尝试使用不同的 Accept: 字段去请求此 URL
  14. https://httpbin.org/anything 发起 PUT 请求
  15. 请求 https://httpbin.org/image/jpeg 并保存为文件,然后使用你的图片编辑器打开这个文件
  16. 请求 https://www.twitter.com,你将会得到空的响应。让 curl 显示出响应头信息,并尝试找出响应内容为空的原因
  17. https://httpbin.org/anything 发起任意的请求,同时设置一些无意义的请求头(例如:panda: elephant
  18. 请求 https://httpbin.org/status/404https://httpbin.org/status/200,然后再次请求它们并且让 curl 显示响应头信息
  19. 请求 https://httpbin.org/anything 并且设置用户名和密码(使用 -u username:password
  20. 设置 Accept-Language: es-ES 的请求头用以下载 Twitter 的西班牙语主页 (https://twitter.com)
  21. 使用 curl 向 Stripe API 发起请求(请查看 https://stripe.com/docs/development 了解如何使用,他们会给你一个测试用的 API key)。尝试向 https://httpbin.org/anything 发起相同的请求

via: https://jvns.ca/blog/2019/08/27/curl-exercises/

作者:Julia Evans 选题:lujun9972 译者:hanwckf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Debian 13“Tri...
IT之家 8 月 10 日消息,历经两年零两个月的开发,Debia...
2025-08-16 16:15:18
libcurl库访问人工智...
一、前言上一篇文章我们调用libcurl库去访问了百度࿰...
2025-05-30 19:42:00
ByBitApi.打开活动...
该问题是由于API请求中timestamp参数为空导致的。可以通过...
2025-01-12 20:01:10
不使用字面双引号将字符串传...
在将字符串传递给curl时,可以使用单引号或反斜杠来避免使用字面双...
2025-01-07 03:31:21
不使用浏览器或curl进行...
要不使用浏览器或curl进行HTTP请求,可以使用Python中的...
2024-12-29 01:02:00
不使用cURL自动化RES...
要实现不使用cURL自动化REST API的解决方法,可以使用Py...
2024-12-28 13:00:39

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...