python笔记42-http请求命令行工具(httpie)
前言
通常我们需要快速的测试某个接口通不通,一般linux上用curl去发http请求,但是这个命令行工具语法有点复杂了,不够直观。
python有一个给人类使用的requests库,非常的简单方便。httpie就是基于requests开发的,给人类用的命令行工具,取代curl的绝佳工具。
环境安装
pip install httpie==1.0.3
查看版本号
C:\Users\dell>pip show httpie
Name: httpie
Version: 1.0.3
Summary: HTTPie - a CLI, cURL-like tool for humans.
Home-page: http://httpie.org/
Author: Jakub Roztocil
Author-email: jakub@roztocil.co
License: BSD
Location: e:\python36\lib\site-packages
Requires: requests, colorama, Pygments
Required-by:
C:\Users\dell>
发送GET请求
get请求不需要带body参数,所以不带参数,会被默认识别成get请求
访问后查看结果,就是这么高效!
C:\Users\dell>http http://127.0.0.1:8000/info
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 290
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:21:25 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
[
{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
},
{
"age": 444444,
"create_time": "2019-09-18",
"id": 6,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
}
]
POST请求
GET请求是默认不带body部分的,那么带上body部分的参数,肯定会识别成POST请求,所以也不用声明请求类型。
一般接口是json类型的,所以头部请求参数类型Content-Type默认是application/json
接下来发个POST请求,比如我要发送的报文是这样的
POST http://127.0.0.1:8000/info HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: HTTPie/1.0.3
Accept-Encoding: gzip, deflate
Accept: application/json, */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 63
{"name": "yoyo", "sex": "M", "age": "20", "mail": "123@qq.com"}
那么用httpie的命令行只需下面简单的一行,如果参数是字符串,可以用key=value格式,如果参数不是字符串,那么用key:=value
http http://127.0.0.1:8000/info name=yoyo sex=M age=20 mail=123@qq.com
C:\Users\dell>http http://127.0.0.1:8000/info name=yoyo sex=M age=20 mail=123@qq.com
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 95
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:22:22 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"data": {
"age": "20",
"mail": "123@qq.com",
"name": "yoyo",
"sex": "M"
},
"message": "create some data!"
}
json文件导入
如果json的参数较多,可以把请求参数写到一个json文件,如test.json
{
"name": "yoyo",
"sex": "M",
"age": "20",
"mail": "123@qq.com"
}
接下来发请求的时候,导入这个json文件就可以
http http://127.0.0.1:8000/info < test.json
测试结果
D:\>http http://127.0.0.1:8000/info < test.json
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 95
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:46:36 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"data": {
"age": "20",
"mail": "123@qq.com",
"name": "yoyo",
"sex": "M"
},
"message": "create some data!"
}
--help查看配置参数
使用--help查看更多配置参数
http --help
显示详细的请求,显示请求的头部和返回的内容
http -v
只显示Header
http -h
只显示Body
http -b
下载文件
http -d
使用http代理
http --proxy=http:http://xxx:x
python笔记42-http请求命令行工具(httpie)的更多相关文章
- 人性化的HTTP命令行工具——HTTPie
Httpie 是什么 Httpie (aych-tee-tee-pie)是一个 HTTP 的命令行客户端.其目标是让 CLI 和 web 服务之间的交互尽可能的人性化.你可以用它很方便的用 http ...
- ARM学习笔记10——GNU ARM命令行工具
一.编译器arm-linux-gcc 1.用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的: 1.1.预处理阶段 编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使 ...
- 屹今为止最好用的HTTP客户端命令行工具-接口调试神器HTTPie
一.思考❓❔ 1.你用过哪些http客户端调试工具? Postman 不够灵活 需要打开客户端, 麻烦 学习成本高 Jmeter 臃肿 麻烦 学习成本高 curl 参数多, 记不住 不够灵活 主要在L ...
- Python -- Scrapy 命令行工具(command line tools)
结合scrapy 官方文档,进行学习,并整理了部分自己学习实践的内容 Scrapy是通过 scrapy 命令行工具进行控制的. 这里我们称之为 “Scrapy tool” 以用来和子命令进行区分. 对 ...
- python制作命令行工具——fire
python制作命令行工具--fire 前言 本篇教程的目的是希望大家可以通读完此篇之后,可以使用python制作一款符合自己需求的linux工具. 本教程使用的是google开源的python第三方 ...
- Python 命令行工具 argparse 模块使用详解
先来介绍一把最基本的用法 import argparse parser = argparse.ArgumentParser() parser.parse_args() 在执行 parse_args() ...
- Python 简易web日志查看工具&可改装为命令行工具
Python 简易web日志查看工具&可改装为命令行工具 效果图 原理 利用python的paramiko库模拟ssh登录操作,并执行tail命令 所需库 flask.paramiko.gev ...
- 将Python模块转变为命令行工具
问:如何输入命令行就能执行python代码呢? 答:要将python模块转变为命令行工具只用在 setup.py 文件中添加参数entry_points 例如: entry_points={ 'con ...
- python 3 廖雪峰博客笔记(三) 命令行模式与交互模式
python 的代码一般保存为 .py结尾的文本文件格式 比如 add.py 里写下如下内容 100 + 200 执行 add.py有两种方式: 1. 命令行方式:将python代码写入脚本中执行 p ...
随机推荐
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- Node.js实现PC端类微信聊天软件(四)
Github StackChat 学习回顾 React和Electron结合 TypeError: fs.existsSync is not a function 在React组件里引入electro ...
- 处理html换行问题
String.prototype.replaceAll = function (FindText, RepText) { regExp = new RegExp(FindText, "g&q ...
- Java中的常量池(字符串常量池、class常量池和运行时常量池)
转载. https://blog.csdn.net/zm13007310400/article/details/77534349 简介: 这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的 ...
- 嵌入式02 STM32 实验10 定时器中断
优秀文章 https://blog.csdn.net/qq_38351824/article/details/82619734 一.STM32通用定时器(TIM2.TIM3.TIM4和TIM5共四个通 ...
- python入门基础 03
整型 -- 数字 (int) 用于比较和运算的 32位 -2 ** 31 -1 ~ 2 ** 31 -1 64位 -2 ** 63 -1 ~ 2 ** 63 -1 + - * / // ** % &q ...
- 《学渣Linux笔记》——更改ls命令的输出颜色和命令提示符颜色(二)
<学渣Linux笔记>--更改ls命令的输出颜色和命令提示符颜色(二) II.更改命令提示符颜色 命令提示符的显示格式是由变量PS1决定的,首先我们查找GNU官方手册,发现如下内容(不是我 ...
- LOJ2461 完美的队列 分块
传送门 如果对于每一个操作\(i\)找到这个操作中所有的数都被pop掉的时间\(ed_i\),那么剩下就直接差分覆盖一下就可以了. 那么考虑如何求出\(ed_i\).发现似乎并没有什么数据结构能够维护 ...
- 应用中有多个Spring Property PlaceHolder导致@Value只能获取到默认值
背景 工作中负责的一套计费系统需要开发一个新通知功能,在扣费等事件触发后发送MQ,然后消费MQ发送邮件或短信通知给客户.因为有多套环境,测试时需要知道是从哪套环境发出的邮件,又不想维护多套通知模板,因 ...
- c# 拼接字符串根据逗号切割 后转换成集合或数组
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_27559331/article/d ...