使用HTTPie调试您的API,HTTPie是一种用Python编写的易于使用的命令行工具。HTTPie是一个非常易于使用、易于升级的HTTP客户端。它发音为“aitch-tee-tee-pie”并作为http命令运行,这是一种用Python编写的用于访问Web的命令行工具。由于这是一篇关于HTTP客户端的操作方法文章,您需要一个HTTP服务器来试用它。从这里访问httpbin.org,一个简单的开源HTTP请求和响应服务。httpbin.org网站是测试WebAPI以及仔细管理和显示请求和响应内容的强大方式,但现在让我们关注HTTPie的强大功能。Wget和cURL的替代品您可能听说过古老的Wget或稍新的cURL工具,它们允许您从命令行访问Web。它们是为访问网站而编写的,而HTTPie用于访问WebAPI。网站请求发生在计算机和终端用户之间,终端用户正在阅读和响应它所看到的内容,这并不太依赖于结构化响应。然而,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别名指向虚拟环境中的命令,即使虚拟环境未处于活动状态,您也可以运行它。您可以将别名命令放在.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-选项:DENYX-XSS-保护: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的cookie,其值为awesome:$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
重定向...重定向...
您应该自动重定向到目标URL:/cookies。如果没有点击链接。注意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-降级服务器: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-凭证:trueAccess-Control-Allow-Origin:*Content-Type:text/html;charset=utf-8Date:星期六,2019年8月10日01: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:周六,2019年8月10日01: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-控制允许凭据:trueAccess-Control-Allow-Origin:*连接:keep-aliveContent-Length:35588Content-Type:image/jpegDate:Fri,2019年8月9日20:25:49GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-Frame-Options:DENYX-XSS-Protection:1;模式=块+----------------------------------------+|注意:终端中未显示二进制数据|+---------------------------------------+要获得正确的图像,您需要保存到文件:$http--downloadGEThttps://httpbin.org/image/jpegHTTP/1.1200OKAccess-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*连接:keep-aliveContent-Length:35588Content-Type:image/jpegDate:2019年8月9日星期五20:28:13GMTReferrer-Policy:no-referrer-when-downgradeServer:nginxX-Content-Type-Options:nosniffX-框架选项:DENYX-XSS-保护:1;mode=block正在下载34.75kB到“jpeg.jpe”完成。0.00068秒(50.05MB/秒)内34.75kB试试吧!图片很可爱使用HTTPie发送自定义请求您可以发送特定的请求标头。这对于需要非标准标头的自定义WebAPI很有用:$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","何st":"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"}下次调试WebAPI的时候,不管是自己的还是其他的记得放下cURL试试命令行工具HTTPie