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表单请求
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
