httpie 是为了简化curl而出的一款命令行工具,非常适合请求restful接口

为什么要写这一篇呢, 网上有很多介绍httpie的文档, 按理说我是没必要的, 但是我发现有些特殊的需求, 居然没有人写过, 而且文章大多千篇一律。比如如何传递form表单数组, 这个在测试php接口的时候很容易出现, 然而并没有人说如何传递, 连官网都是简单的一个 hello=world

如何安装

httpie的官网有非常详细的介绍

如何请求

请求格式

http [flags] [METHOD] URL [REQUEST_ITEM …]
命令 参数设置 请求方法 请求地址 请求体

请求体根据格式不同, 会被放置在不通的位置

标记 位置 例子
== queryParams name==zhangsan
= body 请求体 name=zhangsan
:= body(只有json亲求可用,原始类型,= 号传递的是字符串) is_femal:=true
age:=12
: header Content-type:application/json
‘Cookie:valued-visitor=yes;foo=bar’ \ cookie

常用flag

—form, -f form表单请求
—follow 跟随重定向
—proxy 使用代理
—headers, -h 只打印响应头
—body, -b 只打印响应体
—verbose, -v 打印请求详情
—raw 置顶请求实体 相当于curl -d ‘’
—download, -d 下载文件

form表单请求

httpie 默认是json 请求, 加上 —form 或者 -f 则是form表单请求

简单的form表单请求

  1. http -f pie.dev/post name=John

含有数组的form表单

http -f pie.dev/post name=John action\[0\]='jump' action\[1\]='up'

文件上传

http -f POST pie.dev/post name='John Smith' cv@'~/files/data.bin;type=application/pdf'

json请求

httpie 默认是json 请求, 加上 —form 则是form表单请求

简单的请求

http pie.dev/post name=John

复杂的请求

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

指定请求方法

http POST pie.dev/post name=bob
http DELETE pie.dev/delete id=10

GET请求

http pie.dev/get name==zhangsan age==12

添加header头

http pie.dev/get name==zhangsan age==12 API_TOKEN:TOKEN PLATFORM:ANDROID

添加cookie

http pie.dev/get name==zhangsan age==12 API_TOKEN:TOKEN PLATFORM:ANDROID 'Cookie:php-ver=7.2;ubuntu-ver=20.04'

跟随重定向

默认的, httpie 不会跟随重定向

http pie.dev/redirect/3

执行上面的命令, 可以看到, httpie并没有响应location中的重定向地址,如果希望跟随, 则需要添加--follow

http --follow pie.dev/redirect/3

通过添加--all我们可以看到重定向的详细信息

http --follow --all pie.dev/redirect/3