当前位置: 首页 > 后端技术 > Java

这个命令行HTTP客户端工具真的不错

时间:2023-04-02 02:03:40 Java

程序员专属微信红包封面1000,兑换码:dWK7fUs2WQG![]()cURL相信很多开发和运维都熟悉,非常好用terminal请求工具,可以在命令行中进行HTTP、FTP等请求,在Linux系统中被广泛使用。但是目前有一个缺陷,语法复杂,上手难度较大,目前甚至不直接支持JSON参数请求。胖哥最近又发现了一个类似的工具httpie,一个非常简单的HTTP命令行客户端,甚至有点cool。httpiehttpie是用Python编写的,支持非常全面的操作系统,并且使用起来非常快。胖哥看完5分钟就能用。根据官方描述,其主要特点有:语法简单支持格式化输出和颜色样式Windows、Linux、MacOS同时支持HTTP和HTTPS支持文件上传支持持久会话和维护内置JSON支持,支持类似Wget下载支持插件VScURL既然用来对cURL进行benchmark,那我们就直观的看看它们之间的区别。同样的请求,cURL的参数项比较多,无法直观理解,而httpie则更加人性化。这里介绍四种安装方法。PyPI忽略平台,只要有Python3.7+环境即可。#安装pipinstallhttpieWindows用之前胖哥推荐的包管理器Chocolatey安装。#安装chocoinstallhttpie#升级版本chocoupgradehttpiemacOS上应该没有不安装Homebrew的开发者吧?brewupdate#installbrewinstallhttpie#升级版本brewupgradehttpieLinuxLinux可以多一些,我们常用的Debian系统,比如Ubuntuaptupdate#installaptinstallhttpie#升级版本aptupgradehttpie如果是RedHat系统,自然是要使用yum:yuminstallepel-release#安装yuminstallhttpie#升级版本yumupgradehttpie当然,有些人可能喜欢用Fedora,试试用dnf命令,我不确定。用法httpie的用法很简单,简单到我懒得写详细的说明,但还是得写。我们先试试HelloWorld:httpie命令的格式为:https|http[flags][METHOD]URL[ITEM[ITEM]]详情可以通过http--help查询。请求方法httpie的请求方法(http方法)是可选的,httpie会自行判断。httppie.dev/get除非你明确声明:httpPOSTpie.dev/get和以下方法将被视为POST请求:httppie.dev/posthello=world因为hello=world将被视为请求主体.那么为什么会认为是GET呢?即使它被显式声明为GET!**正确的做法是把=换成==。为什么要用==替换查询字符串参数?https://api.github.com/search/repositories?q=httpie&per_page=1以上是标准的API格式,在httpie?和&用空格代替,参数不需要URL转义,查询参数键值对使用==;使用=请求正文参数键值对。改成:httphttps://api.github.com/search/repositoriesq==httpieper_page==1使用文件固定参数一些配置项,比如JWTToken,老前辈长大了,想复用我应该怎么办?写入文件,然后用@符号加路径引用文件中的值:httpPOSTpie.dev/post\Authentication:@files/jwt.txt#从文件中读取请求头token==@files/text.txt#从文件中读取查询参数name=@files/text.txt#请求体参数bookmarks:=@files/data.json#从文件中嵌入请求体json数据。我认为这种方法使一些配置动态化。文件中的值没问题。请求头是:.JSON使用--json,-j显式设置请求Accept到application/json。这时候=连接的键值对就会转为json。http-jPUTpie.dev/putname=felordage=18验证:-v是--verbose的缩写,可以打印请求详情。如果不使用-j,则需要使用:=分隔键值对,如果有文件引用则加@。httpPUTpie.dev/put\name=John\#String(default)age:=29\#RawJSON—Numbermarried:=false\#RawJSON—布尔爱好:='["http","pies"]'\#原始JSON—数组favorite:='{"tool":"HTTPie"}'\#原始JSON—对象书签:=@files/data.json\#嵌入JSON文件描述=@files/text.txt#嵌入文本文件实际请求正文JSON为:{"age":29,"bookmarks":{"httpie":{"says":"Hello,World!"}},"description":"Hello,World!\n","favorite":{"tool":"HTTPie"},"hobbies":["http","pies"],"married":false,"name":"John"}此时=和:=是一样的。nested嵌套格式也很好理解。我觉得不需要过多描述,看下图就明白了。部分技巧只需要以下方法即可快速请求#https://baidu.comhttps://baidu.com如果是localhost,可以简化为:#https://localhost:8080/yourapihttps:8080/yourapiupload并下载:httpPOSTexample.com/upload<~/upload.pdfhttpGETexample.com/download.pdf>~/download.pdf#表单上传http-fPOSTexample.com/form-with-filemyUpload@~/例子。另外pdf还有代理、外挂等高级玩法,可玩性很强,需要自己去摸索,篇幅就不赘述了。其实httpie也有UI客户端,不过目前处于内测阶段,还没有开放应用。关注公众号:Felordcn获取更多资讯个人博客:https://felord.cn