1. 概述

在这个教程中,我们将学习如何使用HTTPie命令行工具。

2. 什么是HTTPie?

HTTPie是一个专为与HTTP服务器和API交互而创建的命令行HTTP客户端。 此外,HTTPie还可用于测试和调试。

它还具备格式化、颜色化的输出、直观的语法以及内置的JSON支持。

3. 安装

首先,我们需要进行安装:

3.1. 在Linux上

我们可以通过Snapcraft在Linux上安装HTTPie:

$ sudo snap install httpie

3.2. 在Windows上

要在Windows上安装,可以使用Chocolatey

$ choco install httpie

3.3. 在macOS上

最后,在macOS上安装,可以使用Homebrew

$ brew update
$ brew install httpie

4. 使用方法

通常,我们应该按照以下模式调用HTTPie:

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

或:

https [flags] [METHOD] URL [ITEM [ITEM]]

5. 示例

让我们看几个例子:

5.1. 基本示例:Hello World

一个简单的GET请求的Hello World示例:

$ https httpie.io/hello
HTTP/1.1 200 OK
Age: 0
Cache-Control: public, max-age=0, must-revalidate
Connection: keep-alive
...

{
    "ahoy": [
        "Hello, World! 👋 Thank you for trying out HTTPie 🥳",
        "We hope this will become a friendship."
...
}

我们得到响应头和体作为输出。

5.2. 自定义HTTP方法、头和体

我们还可以指定方法并添加自定义项到请求:

$ http PUT httpbin.org/put X-API-Token:123 name=John
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
...
Server: gunicorn/19.9.0

{
    "args": {},
    ...
    "headers": {
        ...
        "X-Api-Token": "123"
    },
    "json": {
        "name": "John"
    },
    ...
}

这里的PUT是方法,X-API-Token:123是自定义HTTP头,name=john是自定义数据项。

5.3. 提交表单数据

如果添加-f标志,我们也可以提交表单数据:

$ http -f POST httpbin.org/post hello=world
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
...
Server: gunicorn/19.9.0

{
    "args": {},
    ...
    "form": {
        "hello": "world"
    },
    ...
}

可以看到,HTTP响应包含了我们指定的表单数据。

5.4. 输出请求和响应

要同时输出请求和响应,我们可以添加-v(表示详细输出):

$ http -v httpbin.org/get
GET /get HTTP/1.1
Accept: */*
...
User-Agent: HTTPie/3.2.1


HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
...
Server: gunicorn/19.9.0

{
    "args": {},
    "headers": {
        "Accept": "*/*",
        ...
}

输出包含请求和响应。

5.5. 上传文件

我们还可以将文件作为请求数据传递:

$ http httpbin.org/post < hello.json
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
...
Server: gunicorn/19.9.0

{
    "args": {},
    "data": "{\"ahoy\":[\"Hello, World! 👋 Thank you for trying out HTTPie 🥳\",\"We hope this will become a friendship.
    ...
    "json": {
        "ahoy": [
            "Hello, World! 👋 Thank you for trying out HTTPie 🥳",
            "We hope this will become a friendship."
        ],
        "links": {
            ...
        }
    },
    ...
}

5.6. 下载文件

我们可以下载文件并重定向输出:

$ http httpbin.org/image/png > image.png

此外,我们还可以像使用wget(Linux下载目录子目录)一样下载文件:

$ http --download httpbin.org/image/png
HTTP/1.1 200 OK
...
Server: gunicorn/19.9.0

Downloading to png.png
Done. 8.1 kB in 00:0.06310 (128.2 kB/s)

6. 总结

在这篇文章中,我们了解了如何安装和使用HTTPie命令行工具。