关于java:这个命令行HTTP客户端工具真不错

程序员专属微信红包封面1000个,兑换码:dWK7fUs2WQG![]()

cURL置信很多做开发的、运维的都不生疏,是十分有用的一个终端申请工具,借助于它能够在命令行中进行HTTPFTP等申请,在Linux零碎中利用十分宽泛。然而它目前有一个缺点,语法简单,上手难度挺高的,甚至目前还不间接反对JSON参数申请。胖哥最近发现了另一个相似的工具httpie,一个非常简单的HTTP命令行客户端,甚至有点酷炫。

httpie

httpie是用Python写的,反对的操作系统十分全面,上手十分快,胖哥看了5分钟就能上手应用了。依据官网形容它的次要特点有:

  • 语法简略
  • 反对格式化输入和黑白款式
  • WindowsLinux、MacOS都反对
  • 同时反对HTTPHTTPS
  • 反对文件上传
  • 反对继续会话放弃
  • 内置JSON反对,反对相似Wget下载
  • 反对插件

VS cURL

既然用来对标cURL,咱们来直观地看看它们之间的差别

同一个的申请,cURL的参数项要多一些而且不能直观了解,而httpie要人性化的多。

装置

装置形式这里介绍四种。

PyPI

忽视平台,只有有Python3.7+环境即可。

# 装置
pip install httpie

Windows

用以前胖哥举荐装置的包管理器Chocolatey装置。

# 装置
choco install httpie
# 降级版本
choco upgrade httpie

MacOS

苹果上应该没有开发者不装Homebrew的吧?

brew update
# 装置
brew install httpie
# 降级版本
brew upgrade httpie

Linux

Linux可就多了,咱们罕用的Debian系,如Ubuntu

apt update
# 装置
apt install httpie
# 降级版本
apt upgrade httpie

如果是红帽系的话,天然是用yum

yum install epel-release
# 装置
yum install httpie
# 降级版本
yum upgrade httpie

当然Fedora也可能有人喜爱用,用dnf命令试试,我不太确定。

用法

httpie用法很简略,简略到我懒得具体写阐明,然而还是得写一下。先来试试Hello World:

httpie命令的格局为:

https|http [flags] [METHOD] URL [ITEM [ITEM]]

具体能够通过http --help查问细节。

申请办法

httpie的申请办法(http method)是可选的,httpie会自行判断。

http pie.dev/get

除非你显式申明:

http POST pie.dev/get

而上面这个办法会被认为是POST申请:

http pie.dev/post hello=world

因为hello=world会被认为是申请体。那咋才认为是GET呢?

即便显式申明为GET也不行! **正确的做法是把=替换为==

查问字符串参数

为什么要=替换为==?

https://api.github.com/search/repositories?q=httpie&per_page=1

下面是一个规范的API格局,在httpie中?&都被空格替换,参数也不须要URL本义,query参数键值对应用==;申请体参数键值对应用=。变为:

http https://api.github.com/search/repositories q==httpie per_page==1

用文件固定参数

有些配置项,比方JWT Token,老长老长了,而且我还想复用咋办?写文件里,而后用@符号加门路来援用文件里的值:

http POST pie.dev/post \
    Authentication:@files/jwt.txt      # 从文件里读取申请头
    token==@files/text.txt             # 从文件读取query参数  
    name=@files/text.txt               # 申请体参数
    bookmarks:=@files/data.json        # 从文件中嵌入申请体json数据

这种形式我感觉把一些配置动态化了,改文件里的值就能够了。

申请头用的:

JSON

应用--json, -j显式设置申请Acceptapplication/json,这个时候=连贯的键值对会被转为json

http -j PUT pie.dev/put name=felord age=18   

验证一下:

-v--verbose 的缩写,能够打印申请细节。

如果不应用-j的话, 就须要应用:=来分隔键值对了,如果有文件援用还要加上@

http PUT pie.dev/put \
    name=John \                        # String (default)
    age:=29 \                          # Raw JSON — Number
    married:=false \                   # Raw JSON — Boolean
    hobbies:='["http", "pies"]' \      # Raw JSON — Array
    favorite:='{"tool": "HTTPie"}' \   # Raw JSON — Object
    bookmarks:=@files/data.json \      # Embed JSON file
    description=@files/text.txt        # Embed text file

理论申请体JSON为:

{
    "age": 29,
    "bookmarks": {
        "httpie": {
            "says": "Hello, World!"
        }
    },
    "description": "Hello, World!\n",
    "favorite": {
        "tool": "HTTPie"
    },
    "hobbies": [
        "http",
        "pies"
    ],
    "married": false,
    "name": "John"
}

这时候=:=是一样的。

嵌套

嵌套的格局也挺好了解的。我感觉不须要过多形容,看上面的图就能明确。

一些技巧

只须要上面这种形式就能够快捷申请

# https://baidu.com
https ://baidu.com

如果是localhost,能够简化为:

# https://localhost:8080/yourapi
https :8080/yourapi

上传下载:

http POST example.com/upload < ~/upload.pdf
http GET example.com/download.pdf > ~/download.pdf
# form 上传
http -f POST example.com/form-with-file  myUpload@~/example.pdf

另外

另外还有代理、插件等高级玩法,可玩性十分强,须要本人去摸索摸索,基于篇幅就不在赘述了。httpie其实还有UI客户端,只不过目前在β测试阶段,没凋谢申请。

关注公众号:Felordcn 获取更多资讯

集体博客:https://felord.cn

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理