HTTPie:好用的命令行工具

HTTPie是一款用户友好的命令行HTTP客户端,常用于API测试和调试。它是cURL和Wget的现代替代品,专注于结构化的API交互。本文介绍了如何安装和使用HTTPie进行GET、POST请求,包括传递参数、设置请求头以及下载二进制文件。通过实例展示了其简洁的语法和功能。
摘要由CSDN通过智能技术生成

目录

一、概述​

二、安装httpie

三、使用httpie

1、GET请求

2、POST请求

3、下载二进制文件


一、概述

官网:https://httpie.io/

HTTPie 是一个非常易用、易于升级的 HTTP 客户端。它的发音为 “aitch-tee-tee-pie” 并以 http 命令运行,它是一个用 Python 编写的来用于访问 Web 的命令行工具。它提供了简单的http命令,返回带代码高亮的结果信息,可以很方便的在http交互场景下进行测试、调试等。

Wget 和 cURL 的替代品:(适用于终端等场景,非终端场景直接使用Postman等工具)

Wget 或稍微新一些的 cURL 工具,它们允许你从命令行访问 Web,它们是为访问网站而编写的,而 HTTPie 则用于访问 Web API。

网站请求发生在计算机和正在阅读并响应它所看到的内容的最终用户之间,这并不太依赖于结构化的响应。但是,API 请求会在两台计算机之间进行结构化调用,人并不是该流程内的一部分,像 HTTPie 这样的命令行工具的参数可以有效地处理这个问题。

二、安装httpie

Windows或CentOS:

pip3 install httpie

三、使用httpie

下面主要以 http://httpbin.org 网站来进行测试

使用语法:

http [flags] [METHOD] URL [ITEM [ITEM]]

METHOD没有指定时,默认为 get,URL协议没有指定时,默认为 http://

可以通过help命令查看使用方法:

http --help
usage:
    http [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]

HTTPie: modern, user-friendly command-line HTTP client for the API era. <https://httpie.io>

Positional arguments:

  These arguments come after any flags and in the order they are listed here.
  Only URL is required.

  METHOD
      The HTTP method to be used for the request (GET, POST, PUT, DELETE, ...).

      This argument can be omitted in which case HTTPie will use POST if there
      is some data to be sent, otherwise GET:

          $ http example.org               # => GET
          $ http example.org hello=world   # => POST

  URL
      The request URL. Scheme defaults to 'http://' if the URL
      does not include one. (You can override this with: --default-scheme=http/https)

      You can also use a shorthand for localhost

          $ http :3000                    # => http://localhost:3000
          $ http :/foo                    # => http://localhost/foo

......

For every --OPTION there is also a --no-OPTION that reverts OPTION
to its default value.

Suggestions and bug reports are greatly appreciated:
    https://github.com/httpie/httpie/issues

1、GET请求

Ps:若需要带参数时用 param==value 的形式

http httpbin.org/get name==Zarten zhihu_id==Zarten

返回结果如下: 

也可以指定内容输出,比如只输出body内容,命令如下:

http httpbin.org/get name==Zarten zhihu_id==Zarten --print b

输出结果:

2、POST请求

Ps:post请求时表单用 = ,默认为post

http httpbin.org/post name=Zarten 
  • 传递json

格式跟上面差不多,若传递值不是字符串时,用 :=

若当进行post请求时,传递数据太多,我们可以直接传一个json类型文件,用 =@ 和 :=G

json.txt

{
    "name": "Zarten",
    "age": 1,
    "hobbies": [
        "http",
        "pies"
    ],
    "description": "John is a nice guy who likes pies.",
    "married": false,
    "name": "John",
    "bookmarks": {
        "HTTPie": "http://httpie.org",
    }
}

命令示例:(使用上面的json.txt文件)

http httpbin.org/post myinfo=@json.txt

返回结果:可以看出返回的json字段值就是我们传入的json.txt中的值。

  • 提交表单

提交表单只需添加 -f 或 --form即可

  • 设置请求头

从上图中可以看出,有些请求头是默认的,例如User-Agent为 "HTTPie/0.9.9",通常我们需要修改请求头,只需设置形式如: header:value

3、下载二进制文件

有时响应体并不是文本形式,它需要发送到可被不同应用打开的文件,比如一个图片:

$ http  GET https://httpbin.org/image/jpeg
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 35588
Content-Type: image/jpeg
Date: Tue, 07 Jun 2022 13:20:04 GMT
Server: gunicorn/19.9.0



+-----------------------------------------+
| NOTE: binary data not shown in terminal |
+-----------------------------------------+

使用download参数:

$ http --download GET https://httpbin.org/image/jpeg
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 35588
Content-Type: image/jpeg
Date: Tue, 07 Jun 2022 13:21:20 GMT
Server: gunicorn/19.9.0

Downloading to jpeg.jpg
Done. 35.6 kB in 00:0.24230 (146.9 kB/s)


 

参考:HTTPie使用详解 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rs勿忘初心

您的鼓励将是我的最大创动原动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值