21 个 curl 命令练习 | Linux 中国
我认为使用 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,我只需要输入:
curl https://api.gumroad.com/v2/sales \
-d "access_token=<SECRET>" \
-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 中国相关推荐
- cd如何省略空格 linux_在 Linux 上调整命令历史 | Linux 中国
导读:在 Linux 系统上,bash shell 的 history 命令可以方便地回顾和重用命令,但是你要控制它记住多少,忘记多少,有很多事情要做.本文字数:3159,阅读时长大约:4分钟http ...
- 知乎 中国用linux,在 Linux 上调整命令历史 | Linux 中国
在 Linux 系统上,bash shell 的 history 命令可以方便地回顾和重用命令,但是你要控制它记住多少,忘记多少,有很多事情要做. 作者:Sandra Henry-stocker 译者 ...
- linux curl命令 post,linux环境下使用curl命令设置Header参数发送post请求
linux环境下使用curl命令设置Header参数发送post请求 linux环境下使用curl命令设置Header参数发送post请求 案例1:curl命令发送post请求并且获取返回结果以及响应 ...
- Linux命令之curl命令
一.命令简介 curl命令在linux操作系统中经常来测试网络和url的联通性,模拟正常的网络访问.curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具 ...
- ElasticSearch快速入门三(curl命令讲解)
API测试工具_微博开放平台:https://open.weibo.com/tools/console# 感兴趣是可以使用这个工具玩一下restful接口调用,可以更形象的了解restful 下面我们 ...
- curl命令介绍与使用
curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或 ...
- curl命令学习使用小结
curl简介 curl 支持你做很多事情.你可以把 curl 想象成一个精简的命令行网页浏览器.它支持几乎你能想到的所有协议,可以交互访问几乎所有在线内容.唯一和浏览器不同的是,curl 不会渲染接收 ...
- jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...
- Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)
目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...
最新文章
- [从0到1编写服务器]准备知识
- 2018年计算机应用基础作业,2018年计算机应用基础作业二答案.doc
- Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
- Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】
- 小白都能看懂的网络性能测试
- 34、Power Query-中国式排名
- 阿里云服务器重启出现An error occurred 如何处理
- jsp 的 for循环
- CoreData整理(二)——多线程方案
- Python 实现的下载op海贼王网的图片(网络爬虫)
- pythoncontinue函数_Python continue语句
- iOS -- block
- java多线程同步与测试_Java多线程同步Synchronized深入解析
- mysql代码创建表博客园_数据库——用代码创建表
- php公众号关注自动回复内容,微信公众号自动回复内容大全集锦
- switch之enum
- uniapp 清除文件缓存
- CEIWEI ParallelMonitor并口监控 v3.0 并口打印机监控, 并口打开印机, 并行端口过滤, 并行端口监控, 并口过滤, 并口监控
- Android Base64解码失败问题
- 全新的Lync 2013为我们带来了什么?
热门文章
- 【Spring Bean的生命周期】
- Linux安装与配置
- 021-PHP常用的数值类型判断函数
- [学习笔记]扩展LUCAS定理
- 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) B】Shashlik Cooking
- Scikit-Learn简单操作
- 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
- java 注解(annotation)基础学习
- php 生成饼状图,折线图,条形图 通用类
- Java JDBC初步