HTTPie如何使用
今天小编给大家分享一下HTTPie如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
HTTPie 是一个 HTTP 的命令行客户端,目标是让 CLI 和 web 服务之间的交互尽可能的人性化。这个工具提供了简洁的 http 命令,允许通过自然的语法发送任意 HTTP 请求数据,展示色彩化的输出。HTTPie 可用于与 HTTP 服务器做测试、调试和常规交互。
你可能听说过古老的 Wget 或稍微新一些的 cURL 工具,它们允许你从命令行访问 Web。它们是为访问网站而编写的,而 HTTPie 则用于访问 Web API。
网站请求发生在计算机和正在阅读并响应它所看到的内容的最终用户之间,这并不太依赖于结构化的响应。但是,API 请求会在两台计算机之间进行结构化调用,人并不是该流程内的一部分,像 HTTPie 这样的命令行工具的参数可以有效地处理这个问题。
安装 HTTPie有几种方法可以安装 HTTPie。你可以通过包管理器安装,无论你使用的是 brew、apt、yum 还是 dnf。但是,如果你已配置 virtualenvwrapper,那么你可以用自己的方式安装:
$mkvirtualenvhttpie...(httpie)$pipinstallhttpie...(httpie)$deactivate$aliashttp=~/.virtualenvs/httpie/bin/http$http-bGEThttps://httpbin.org/get{"args":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip,deflate","Host":"httpbin.org","User-Agent":"HTTPie/1.0.2"},"origin":"104.220.242.210,104.220.242.210","url":"https://httpbin.org/get"}
通过将 http 别名指向为虚拟环境中的命令,即使虚拟环境在非活动状态,你也可以运行它。你可以将 alias 命令放在 .bash_profile 或 .bashrc 中,这样你就可以使用以下命令升级 HTTPie:
$~/.virtualenvs/httpie/bin/pipinstall-Upip使用 HTTPie 查询网站
HTTPie 可以简化查询和测试 API。上面使用了一个选项,-b(即 –body)。没有它,HTTPie 将默认打印整个响应,包括响应头:
$httpGEThttps://httpbin.org/getHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Connection:keep-aliveContent-Encoding:gzipContent-Length:177Content-Type:application/jsonDate:Fri,09Aug201920:19:47GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=block{"args":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip,deflate","Host":"httpbin.org","User-Agent":"HTTPie/1.0.2"},"origin":"104.220.242.210,104.220.242.210","url":"https://httpbin.org/get"}
这在调试 API 服务时非常重要,因为大量信息在响应头中发送。例如,查看发送的 cookie 通常很重要。httpbin.org 提供了通过 URL 路径设置 cookie(用于测试目的)的方式。以下设置一个标题为 opensource, 值为 awesome 的 cookie:
$httpGEThttps://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1302FOUNDAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Connection:keep-aliveContent-Length:223Content-Type:text/html;charset=utf-8Date:Fri,09Aug201920:22:39GMTLocation:/cookiesReferrer-Policy:no-referrer-when-downgradeServer:nginxSet-Cookie:opensource=awesome;Path=/X-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=block"-//W3C//DTDHTML3.2Final//EN">Redirecting...Redirecting...YoushouldberedirectedautomaticallytotargetURL:"/cookies">/cookies.Ifnotclickthelink.
注意 Set-Cookie: opensource=awesome; Path=/ 的响应头。这表明你预期设置的 cookie 已正确设置,路径为 /。另请注意,即使你得到了 302 重定向,http 也不会遵循它。如果你想要遵循重定向,则需要明确使用 –follow 标志请求:
$http--followGEThttps://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Connection:keep-aliveContent-Encoding:gzipContent-Length:66Content-Type:application/jsonDate:Sat,10Aug201901:33:34GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=block{"cookies":{"opensource":"awesome"}}
但此时你无法看到原来的 Set-Cookie 头。为了看到中间响应,你需要使用 –all:
$http--headers--all--followGEThttps://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1302FOUNDAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Content-Type:text/html;charset=utf-8Date:Sat,10Aug201901:38:40GMTLocation:/cookiesReferrer-Policy:no-referrer-when-downgradeServer:nginxSet-Cookie:opensource=awesome;Path=/X-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=blockContent-Length:223Connection:keep-aliveHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Content-Encoding:gzipContent-Type:application/jsonDate:Sat,10Aug201901:38:41GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=blockContent-Length:66Connection:keep-alive
打印响应体并不有趣,因为你大多数时候只关心 cookie。如果你想看到中间请求的响应头,而不是最终请求中的响应体,你可以使用:
$http--printhb--history-printh--all--followGEThttps://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1302FOUNDAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Content-Type:text/html;charset=utf-8Date:Sat,10Aug201901:40:56GMTLocation:/cookiesReferrer-Policy:no-referrer-when-downgradeServer:nginxSet-Cookie:opensource=awesome;Path=/X-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=blockContent-Length:223Connection:keep-aliveHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Content-Encoding:gzipContent-Type:application/jsonDate:Sat,10Aug201901:40:56GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=blockContent-Length:66Connection:keep-alive{"cookies":{"opensource":"awesome"}}
你可以使用 –print 精确控制打印的内容(h:响应头;b:响应体),并使用 –history-print 覆盖中间请求的打印内容设置。
使用 HTTPie 下载二进制文件有时响应体并不是文本形式,它需要发送到可被不同应用打开的文件:
$httpGEThttps://httpbin.org/image/jpegHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Connection:keep-aliveContent-Length:35588Content-Type:image/jpegDate:Fri,09Aug201920:25:49GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=block+-----------------------------------------+|NOTE:binarydatanotshowninterminal|+-----------------------------------------+
要得到正确的图片,你需要保存到文件:
$http--downloadGEThttps://httpbin.org/image/jpegHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Connection:keep-aliveContent-Length:35588Content-Type:image/jpegDate:Fri,09Aug201920:28:13GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;mode=blockDownloading34.75kBto"jpeg.jpe"Done.34.75kBin0.00068s(50.05MB/s)
试一下!图片很可爱。
使用 HTTPie 发送自定义请求你可以发送指定的请求头。这对于需要非标准头的自定义 Web API 很有用:
$httpGEThttps://httpbin.org/headersX-Open-Source-Com:Awesome{"headers":{"Accept":"*/*","Accept-Encoding":"gzip,deflate","Host":"httpbin.org","User-Agent":"HTTPie/1.0.2","X-Open-Source-Com":"Awesome"}}
最后,如果要发送 JSON 字段(尽管可以指定确切的内容),对于许多嵌套较少的输入,你可以使用快捷方式:
$http--bodyPUThttps://httpbin.org/anythingopen-source=awesomeauthor=moshez{"args":{},"data":"{\"open-source\":\"awesome\",\"author\":\"moshez\"}","files":{},"form":{},"headers":{"Accept":"application/json,*/*","Accept-Encoding":"gzip,deflate","Content-Length":"46","Content-Type":"application/json","Host":"httpbin.org","User-Agent":"HTTPie/1.0.2"},"json":{"author":"moshez","open-source":"awesome"},"method":"PUT","origin":"73.162.254.113,73.162.254.113","url":"https://httpbin.org/anything"}
下次在调试 Web API 时,无论是你自己的还是别人的,记得放下 cURL,试试 HTTPie 这个命令行工具。
以上就是“HTTPie如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。