首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >linux中有人因为httpie(更干爽)放弃了curl

linux中有人因为httpie(更干爽)放弃了curl

作者头像
入门笔记
发布2022-06-02 17:03:06
发布2022-06-02 17:03:06
6050
举报
文章被收录于专栏:入门小站入门小站

之前在命令行下进行 HTTP 服务的调试和信息查看都是使用经典的 cURL,不过前段时间发现一个交互更加友好的工具,就是 HTTPie。

之前在命令行下进行 HTTP 服务的调试和信息查看都是使用经典的 cURL,不过前段时间发现一个交互更加友好的工具,就是 HTTPie。

先放一个 HTTPie 官方的一个 HTTPie VS cURL 的图给大家看看。

HTTPie VS cURL

HTTPie 则在使用时的表现力、人性化做得比 wget、curl 好得多,就像在官网上宣传的那样,它追求的是人性化、简单自然的语法,以及彩色的输出。而且 HTTPie 还有一些不错的优点,比如对 JSON 的良好支撑、持久性会话等特性。

Linux 上安装

Debian, Ubuntu 或 Linux Mint

代码语言:javascript
复制
sudo apt-get install httpie

Fedora,CentOS/RHEL

代码语言:javascript
复制
sudo yum install httpie

或者使用 python 的方式来安装

代码语言:javascript
复制
sudo  pip install --upgrade httpie

Mac OSX

代码语言:javascript
复制
brew install httpie

安装开发版本

代码语言:javascript
复制
# Mac OSX
brew install httpie --HEAD

# Python安装方式
pip install --upgrade https://github.com/jkbrzt/httpie/tarball/master

定制头部

代码语言:javascript
复制
http rumenz.com/test/ User-Agent:Xmodlo/1.0 Referer:http://rumenz.com

这个 HTTP 请求看起是这样。

代码语言:javascript
复制
GET /test/ HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: rumenz.com
Referer: http://rumenz.com
User-Agent: Xmodlo/1.0

下载文件

你也可以把 HTTPie 作为文件下载器来使用。

代码语言:javascript
复制
http rumenz.com/test/ > httpie-howto.html
  • 或者
代码语言:javascript
复制
http --download rumenz.com/test/
使用其他 HTTP 方法

除了默认的 GET 方法,你还可以使用其他方法(比如 PUT、POST、DELETE、HEAD)

PUT

代码语言:javascript
复制
http PUT rumenz.com name='入门小站' email='rumenz@email.com'
POST
代码语言:javascript
复制
http -f POST rumenz.com name='入门小站' email='rumenz@email.com'

-f 选项使 http 命令序列化数据字段,并将Content-Type设置为application/x-www-form-urlencoded;charset=utf-8

这个 HTTP POST 请求看起这样:

代码语言:javascript
复制
POST / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 41
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: rumenz.com
User-Agent: HTTPie/0.9.2

name=ru+menz&email=rumenz@email.com

HEAD

代码语言:javascript
复制
http HEAD rumenz.com

HEAD这个方法只会让服务器返回http response headers

这个命令结果如下:

Request

代码语言:javascript
复制
HEAD / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: rumenz.com
User-Agent: HTTPie/0.9.2

Response

代码语言:javascript
复制
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Age: 0
Cache-Control: max-age=600
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 36794
Content-Type: text/html; charset=utf-8
Date: Wed, 15 Jul 2015 09:26:22 GMT
Expires: Wed, 15 Jul 2015 09:36:22 GMT
Last-Modified: Sun, 12 Jul 2015 11:32:15 GMT
Server: GitHub.com
Vary: Accept-Encoding
Via: 1.1 varnish
X-Cache: MISS
X-Cache-Hits: 0
X-Served-By: cache-fra1227-FRA
X-Timer: S1436952382.011631,VS0,VE99

JSON 支持

HTTPie 内置 JSON 的支持。事实上 HTTPie 默认使用的Content-Type就是application/json。因此,当你不指定Content-Type发送请求参数时,它们就会自动序列化为 JSON 对象。

代码语言:javascript
复制
http POST rumenz.com name='入门小站' email='rumenz@email.com'

这个请求看起来就是这样:

代码语言:javascript
复制
POST / HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 52
Content-Type: application/json
Host: rumenz.com
User-Agent: HTTPie/0.9.2

{
    "email": "rumenz@email.com",
    "name": "入门小站"
}

输入重定向

HTTPie 的另外一个友好特性就是输入重定向,你可以使用缓冲数据提供 HTTP 请求内容。例如:

代码语言:javascript
复制
http POST rumenz.com < my_info.json
  • 或:
代码语言:javascript
复制
echo '{"name": "入门小站","email": "rumenz@email.com"}' | http POST rumenz.com
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux 上安装
  • 安装开发版本
  • 定制头部
  • 下载文件
    • 使用其他 HTTP 方法
  • PUT
    • POST
  • HEAD
  • Request
  • Response
  • JSON 支持
  • 输入重定向
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档