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

-- Julia Evans

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

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

什么是 curl ?

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

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

熟能生巧

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

  1. curl https://api.gumroad.com/v2/sales \

  2. -d "access_token=<SECRET>" \

  3. -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/404 和 https://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中国 荣誉推出

21 个 curl 命令练习 | Linux 中国相关推荐

  1. cd如何省略空格 linux_在 Linux 上调整命令历史 | Linux 中国

    导读:在 Linux 系统上,bash shell 的 history 命令可以方便地回顾和重用命令,但是你要控制它记住多少,忘记多少,有很多事情要做.本文字数:3159,阅读时长大约:4分钟http ...

  2. 知乎 中国用linux,在 Linux 上调整命令历史 | Linux 中国

    在 Linux 系统上,bash shell 的 history 命令可以方便地回顾和重用命令,但是你要控制它记住多少,忘记多少,有很多事情要做. 作者:Sandra Henry-stocker 译者 ...

  3. linux curl命令 post,linux环境下使用curl命令设置Header参数发送post请求

    linux环境下使用curl命令设置Header参数发送post请求 linux环境下使用curl命令设置Header参数发送post请求 案例1:curl命令发送post请求并且获取返回结果以及响应 ...

  4. Linux命令之curl命令

    一.命令简介   curl命令在linux操作系统中经常来测试网络和url的联通性,模拟正常的网络访问.curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具 ...

  5. ElasticSearch快速入门三(curl命令讲解)

    API测试工具_微博开放平台:https://open.weibo.com/tools/console# 感兴趣是可以使用这个工具玩一下restful接口调用,可以更形象的了解restful 下面我们 ...

  6. curl命令介绍与使用

    curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或 ...

  7. curl命令学习使用小结

    curl简介 curl 支持你做很多事情.你可以把 curl 想象成一个精简的命令行网页浏览器.它支持几乎你能想到的所有协议,可以交互访问几乎所有在线内容.唯一和浏览器不同的是,curl 不会渲染接收 ...

  8. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国

    我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...

  9. Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)

    目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...

最新文章

  1. [从0到1编写服务器]准备知识
  2. 2018年计算机应用基础作业,2018年计算机应用基础作业二答案.doc
  3. Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
  4. Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】
  5. 小白都能看懂的网络性能测试
  6. 34、Power Query-中国式排名
  7. 阿里云服务器重启出现An error occurred 如何处理
  8. jsp 的 for循环
  9. CoreData整理(二)——多线程方案
  10. Python 实现的下载op海贼王网的图片(网络爬虫)
  11. pythoncontinue函数_Python continue语句
  12. iOS -- block
  13. java多线程同步与测试_Java多线程同步Synchronized深入解析
  14. mysql代码创建表博客园_数据库——用代码创建表
  15. php公众号关注自动回复内容,微信公众号自动回复内容大全集锦
  16. switch之enum
  17. uniapp 清除文件缓存
  18. CEIWEI ParallelMonitor并口监控 v3.0 并口打印机监控, 并口打开印机, 并行端口过滤, 并行端口监控, 并口过滤, 并口监控
  19. Android Base64解码失败问题
  20. 全新的Lync 2013为我们带来了什么?

热门文章

  1. 【Spring Bean的生命周期】
  2. Linux安装与配置
  3. 021-PHP常用的数值类型判断函数
  4. [学习笔记]扩展LUCAS定理
  5. 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) B】Shashlik Cooking
  6. Scikit-Learn简单操作
  7. 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
  8. java 注解(annotation)基础学习
  9. php 生成饼状图,折线图,条形图 通用类
  10. Java JDBC初步