找回密码
 加入怎通
查看: 177|回复: 0

21 个 curl 命令练习(curl命令行)

[复制链接]
我来看看 发表于 2023-03-21 23:09:17 | 显示全部楼层 |阅读模式
2 z4 l$ v) T* W3 u2 x+ s' D: k

我认为使用 curl 构造 HTTP 请求也许就是这样的一项技能,所以这里有一些 curl 练习作为实验!-- Julia Evans(作者)最近,我对人们如何学习新事物感兴趣我正在读 Kathy Sierra 的好书《 Badass: Making Users Awesome 》,它探讨了有关“刻意练习”的想法。

2 V% K( R/ l* d1 g1 i F w7 U G/ O0 D

这个想法是,你找到一个可以用三节 45 分钟课程内能够学会的小技能,并专注于学习这项小技能因此,作为一项练习,我尝试考虑一项能够在三节 45 分钟课程内学会的计算机技能我认为使用 curl 构造 HTTP 请求也许就是这样的一项技能,所以这里有一些 curl 练习作为实验!

1 |% @% |7 c$ T& R& U* w! D% Q

什么是 curl ?curl 是用于构造 HTTP 请求的命令行工具我喜欢使用 curl,因为它能够很轻松地测试服务器或 API 的行为是否符合预期,但是刚开始接触它的时候会让你感到一些困惑!下面是一幅解释 curl 常用命令行参数的漫画 (在我的 Bite Size Networking 杂志的第 6 页)。

+ n* t1 j2 n* V$ e, G# p

熟能生巧对于任何命令行工具,我认为熟练使用是很有帮助的,能够做到只输入必要的命令真是太好了例如,最近我在测试 Gumroad API,我只需要输入:curl https://api.gumroad.com/v2/sales \! p; \1 \3 B! Y2 V- h -d "access_token=" \ ! `3 a9 I' Z, J0 h4 ^ -X GET -d "before=2016-09-03"。

0 X+ u1 F' M$ N" z+ E" E8 G% H

就能从命令行中得到想要的结果21 个 curl 练习这些练习是用来理解如何使用 curl 构造不同种类的 HTTP 请求的,它们是故意有点重复的,基本上包含了我需要 curl 做的任何事情为了简单起见,我们将对 https://httpbin.org 发起一系列 HTTP 请求,httpbin 接受 HTTP 请求,然后在响应中回显你所发起的 HTTP 请求。

+ o, f+ ^# W: l' R* F0 x' D

请求 https://httpbin.org请求 https://httpbin.org/anything ,它将会解析你发起的请求,并且在响应中回显curl 默认发起的是 GET 请求向 https://httpbin.org/anything 发起 GET 请求。

- B6 a0 }: K4 F0 D# ~

向 https://httpbin.org/anything 发起 GET 请求,但是这次需要添加一些查询参数(设置 value=panda)请求 Google 的 robots.txt 文件 ( www.google.com/robots.txt )

& r; i: o: J4 g, p+ V. e( I% X

向 https://httpbin.org/anything 发起 GET 请求,并且设置请求头为 User-Agent: elephant向 https://httpbin.org/anything 发起 DELETE 请求

) r* G' ~" u. F* b

请求 https://httpbin.org/anything 并获取响应头信息向 https://httpbin.com/anything 发起请求体为 JSON {"value": "panda"} 的 POST 请求

$ a" V, a, l1 Q, b+ J3 B- Y2 Y7 @: D I

发起与上一次相同的 POST 请求,但是这次要把请求头中的 Content-Type 字段设置成 application/json(因为 POST 请求需要一个与请求体相匹配的 Content-Type 请求头字段)。

2 G9 E; Z6 T7 h5 L9 @- P3 _

查看响应体中的 json 字段,对比上一次得到的响应体向 https://httpbin.org/anything 发起 GET 请求,并且在请求头中设置 Accept-Encoding: gzip(将会发生什么?为什么会这样?)

& I B% F" z7 P1 O4 k/ t4 J5 R

将一些 JSON 放在文件中,然后向 https://httpbin.org/anything 发起请求体为该文件的 POST 请求设置请求头为 Accept: image/png 并且向 https://httpbin.org/image 发起请求,将输出保存为 PNG 文件,然后使用图片浏览器打开。

- D% E4 T8 Y! O1 d" r6 E4 S3 ^; H

尝试使用不同的 Accept: 字段去请求此 URL向 https://httpbin.org/anything 发起 PUT 请求请求 https://httpbin.org/image/jpeg 并保存为文件,然后使用你的图片编辑器打开这个文件

7 Y/ G) k) n9 z. d4 ~! z

请求 https://www.twitter.com ,你将会得到空的响应让 curl 显示出响应头信息,并尝试找出响应内容为空的原因向 https://httpbin.org/anything 发起任意的请求,同时设置一些无意义的请求头(例如:panda: elephant)。

& J G" D7 G0 q0 I, ~

请求 https://httpbin.org/status/404 和 https://httpbin.org/status/200 ,然后再次请求它们并且让 curl 显示响应头信息请求 https://httpbin.org/anything 并且设置用户名和密码(使用 -u username:password)

6 [! t% |+ Z" L) W6 c3 F. x/ L+ P1 l& J

设置 Accept-Language: es-ES 的请求头用以下载 Twitter 的西班牙语主页 ( https://twitter.com )使用 curl 向 Stripe API 发起请求(请查看 https://stripe.com/docs/development 了解如何使用,他们会给你一个测试用的 API key)。

' V$ ?% Q! i4 a1 p) z: F5 W2 }0 K

尝试向 https://httpbin.org/anything 发起相同的请求via: https://jvns.ca/blog/2019/08/27/curl-exercises/作者: Julia Evans 选题: lujun9972 译者: hanwckf 校对: wxy

2 {' H) c% D, A& G* s4 H0 ^. ^

本文由 LCTT 原创编译, Linux中国 荣誉推出点击“了解更多”可访问文内链接

% v- u7 T: B) r6 Y3 N' @ * }/ I5 a! j. _8 Q / Q# m* U+ u* A j1 Z- d# Q! c# s5 E$ W1 Z6 [ . ?$ b n) R& {/ O( G4 _

暂时无法加载帖子列表

回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-10-1 07:57 , Processed in 0.060072 second(s), 24 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表