程序员专属微信红包封面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

这个命令行HTTP客户端工具真不错的更多相关文章

  1. Linux系统——28个命令行下的工具

    Unix/Linux下的28个命令行下的工具 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具(原文链接),有一些是大家熟悉的,有一些是非常有用的,有一些是不 ...

  2. curl太复杂难用记不住?来试试Httpie一个简单的现代化命令行Http客户端

    HTTPie 是一个简单的现代化命令行 HTTP 客户端. 交互友好,JSON支持,语法高亮,类wget下载,支持拓展等 功能特性 自然而且简单的命令语句 格式化且高亮显示输出内容 内置 JSON 支 ...

  3. APICloud提供适用于命令行的开发工具,开发更具极客精神!

    APICloud近期大动作不断,上周刚刚支持Atom编辑器,并推出核心开发工具库.本周又为开发者提供了一款超轻便的新开发工具--CLI工具! 操作系统: Mac/Windows/Linux nodej ...

  4. VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录

    VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...

  5. rtorrent - 强大的命令行BT客户端

    NOTE - 文中展示的所有示例和指令都已经在Ubuntu 13.04中测试过. 一.            安装 [root@GY-10000 data]# yum search rtorrent ...

  6. 命令行web客户端与HTTP REST API调试工具

    1.命令行web客户端 curl wget httpie 2.优雅的REST API调试工具 insomnia postman

  7. [Linux] jq:命令行JSON处理工具

    jq命令帮助我们很方便地在终端查看和处理json文件 jq命令的帮助信息: abby@abby:bgs$ jq -h jq - commandline JSON processor [version ...

  8. 命令行视频下载工具 you-get 和 youtube-dl

    you-get 和 youtube-dl 都是基于 Python 的命令行媒体文件下载工具,完全开源免费跨平台.用户只需使用简单命令并提供在线视频的网页地址即可让程序自动进行嗅探.下载.合并.命名和清 ...

  9. PHP 命令行参数解析工具类

    <?php/** * 命令行参数解析工具类 * @author guolinchao * @email luoyecb@163.com */class CommandLine{ // store ...

随机推荐

  1. 1122 机器人走方格 V4

    1122 机器人走方格 V4 基准时间限制:1 秒 空间限制:131072 KB  四个机器人a b c d,在2 * 2的方格里,一开始四个机器人分别站在4个格子上,每一步机器人可以往临近的一个格子 ...

  2. 「算法笔记」Splay

    一.简介 Splay(伸展树)是平衡树中的一种.它通过不断将某个节点旋转到根节点的位置,使整棵树仍满足 BST 的性质,并且保持平衡而不至于退化为链. 频繁访问的节点会被移动到离根节点较近的位置,进而 ...

  3. Causal Inference

    目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring 条件 ...

  4. JPEG原理详解 (转载)

    JPEG算法解密 by jinchao   图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,这个体积如果存放文本 ...

  5. [opencv]调用鼠标事件执行grabcut算法实现阈值分割

    #include<iostream> #include <opencv2/opencv.hpp> #include <math.h> using namespace ...

  6. <数据结构>XDOJ327.最短路径

    问题与解答 问题描述 求图中任意两个顶点之间的最短路径. 输入格式 输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,-,n-1进行编号).之后的n行每行都包含n个整数,第i行第j ...

  7. iNeuOS工业互联网操作系统,增加设备驱动的自定义参数模板,适配行业个性化设备的应用场景

    目       录 1.      概述... 2 2.      平台演示... 2 3.      应用过程... 2 1.   概述 增加设备驱动的自定义参数模板,适配行业个性化设备的应用场景. ...

  8. hisql ORM 框架研究(国内第一个支持HANA的ORM框架)

    HiSql 操作说明文档 V1.0 下一代ORM框架 国内第一个支持HANA的ORM框架 hisql源码下载 git clone https://github.com/tansar/HiSql.git ...

  9. monkey怎么做APP自动化?

    前言: monkey是andriod平台自动化测试的一种手段,通过monkey程序模拟触摸屏幕.滑动,滚屏,按键来对设备进行压力测试,检测程序多久会出现异常第一种:设置好命令,做随机自动化 什么时候可 ...

  10. 怎样用命令行导入注册表 .reg 文件

    https://stackoverflow.com/questions/49676660/how-to-run-the-reg-file-using-powershell Get-Command re ...