『居善地』接口测试 — 6、Httpbin服务介绍
1、Httpbin服务介绍
Httpbin是使用Python + Flask语言编写的一个HTTP Request & Response Service的简单服务,该服务主要用于测试 HTTP 请求,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的全部请求信息和响应信息)。
Httpbin支持HTTP/HTTPS请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等。能模拟302跳转乃至302跳转的次数,还可以返回一个HTML文件或一个XML文件或一个图片文件(还支持指定返回图片的格式)。
Httpbin接口地址:http://httpbin.org/或者https://httpbin.org/
Httpbin开源地址:https://github.com/postmanlabs/httpbin
2、在Windows系统中部署Httpbin服务
Httpbin是部署在国外的,考虑到有时无法访问的情况,也是可以自己在本地搭建部署,非常简单。
这样本地部署Httpbin的方式,可以不用和外部的服务器交互就可以进行HTTP业务的调试。
(1)通过pip工具安装
需要分别安装Httpbin与guicorn,guicorn是一个wsgi http服务器,用来启动Httpbin服务。
# 进入cmd命令行,执行如下命令:
# 安装Httpbin与guicorn
pip install gunicorn
pip install httpbin
# 执行如下命令启动服务:
gunicorn httpbin:app
注意:这种方式在Windows系统下不能使用,报错
ImportError: No module named 'fcntl'。(网上查的原因是fcntl模块在Windows环境下不被识别)
(2)本地安装Httpbin:
# 从github上克隆Httpbin到本地
# 会直接克隆到cmd命令的当前目录下,如C:\Users\L>下执行的命令。
git clone https://github.com/Runscope/httpbin.git
# 安装httpbin命令
pip install -e httpbin
# 启动httpbin服务命令
python -m httpbin.core [--port=PORT] [--host=HOST]
# 例如:访问方位为:http://127.0.0.1:9999/get
python -m httpbin.core --port=9999
亲测:在Windows系统下,这种方式能在本地正常启动
Httpbin服务。
3、在Linux系统中部署Httpbin服务
Linux系统中我们通常使用Docker的方式部署Httpbin服务,这样非常的方便简单。
一共只有两步就可以完成:第一,拉取镜像;第二,启动镜像。
(关于Docker的安装,请看Docker部分的相关文章,这里就不在介绍了)
(1)拉取Httpbin服务的Docker镜像到本地
[root@localhost ~]# docker pull kennethreitz/httpbin
Using default tag: latest
latest: Pulling from kennethreitz/httpbin
473ede7ed136: Pull complete
c46b5fa4d940: Pull complete
93ae3df89c92: Pull complete
6b1eed27cade: Pull complete
0373952b589d: Pull complete
7b82cd0ee527: Pull complete
a36b2d884a89: Pull complete
Digest: sha256:599fe5e5073102dbb0ee3dbb65f049dab44fa9fc251f6835c9990f8fb196a72b
Status: Downloaded newer image for kennethreitz/httpbin:latest
docker.io/kennethreitz/httpbin:latest
(2)启动本地Httpbin服务的Docker镜像
[root@localhost ~]# docker run -p 80:80 kennethreitz/httpbin
[2021-05-20 02:13:00 +0000] [1] [INFO] Starting gunicorn 19.9.0
[2021-05-20 02:13:00 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
[2021-05-20 02:13:00 +0000] [1] [INFO] Using worker: gevent
[2021-05-20 02:13:00 +0000] [9] [INFO] Booting worker with pid: 9
当然我们可以后台运行Docker镜像,执行命令:docker run -d -p 9999:80 kennethreitz/httpbin。
(3)浏览器中访问本地Httpbin服务
192.168.134.129为Linux服务器或者虚拟机的地址。
如下图所示:

这样我们就可以在本地使用Httpbin接口服务了,速度会非常的快。
4、Httpbin访问方式
Httpbin的使用方法非常简单,你只需要把请求的地址修改为httpbin.org即可。
例如GET请求:http://httpbin.org/get。
如果使用本地部署的Httpbin服务,访问:http://127.0.0.1:[自己设置的端口号]/请求路径
(请看上边第2点)
5、Httpbin常用调试接口
访问:http://httpbin.org/#/或者本地Httpbin服务http://127.0.0.1:9999/,就会出现如下界面。
页面中每个选项都可以点开,里边有对应的接口说明。

常用接口列表:
| Endpoint | Descirption |
|---|---|
/ip |
返回请求者的IP地址。 |
/user-agent |
返回传入请求的User-Agent参数。 |
/headers |
返回传入请求的请求头参数。 |
/get |
GET请求的提交参数。 |
/post |
POST请求的提交参数。 |
/patch |
PATCH请求的提交参数。 |
/put |
PUT请求的提交参数。 |
/delete |
DELETE请求的提交参数。 |
举例:
(1)返回headers信息
# 调用接口:https://httpbin.org/headers
{
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-5ff1a4f7-69a84fca0693b09e28d214b0"
}
}
(2)返回访问此链接的IP地址
# 调用接口:https://httpbin.org/ip
{
"origin": "106.35.9.12"
}
(3)返回GET请求的详细信息
# 调用接口:https://httpbin.org/get?department=1
{
"args": {
"department": "1"
},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400",
"X-Amzn-Trace-Id": "Root=1-5ff1a59b-4e514a40023721d276ae07eb"
},
"origin": "106.35.9.12",
"url": "https://httpbin.org/get?department=1"
}
说明:如果需要看
Httpbin服务POST如何使用,请看requests库POST请求的学习文章。
6、总结:
Httpbin服务就是干什么用的?
就是用于查看我发出去的请求到底是什么样子的。你需要查看请求中的哪一部分信息,就调用什么样的接口即可。
『居善地』接口测试 — 6、Httpbin服务介绍的更多相关文章
- 『居善地』接口测试 — 4、Requests库发送GET请求
目录 1.使用Requests库发送带参数的GET请求 2.查看GET请求的内容 3.带请求头.参数的Get请求 Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求. ...
- 『居善地』接口测试 — 5、使用Requests库发送POST请求
目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...
- 『居善地』接口测试 — 12、Moco框架介绍
目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...
- 『居善地』接口测试 — 3、Requests库介绍
目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...
- 『居善地』接口测试 — 7、Requests库使用proxies代理发送请求
目录 1.代理的了解 2.代理的分类 (1)正向代理 (2)反向代理 (3)总结 3.Requests库使用代理 4.总结 1.代理的了解 在上图中我们可以把Web server看成是Google服务 ...
- 『居善地』接口测试 — 11、接口签名sign原理
目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...
- 『居善地』接口测试 — 13、Moco框架的使用
目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用
目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...
随机推荐
- 从键盘读入学生成绩,找出最高分, 并输出学生成绩等级(Java)
从键盘读入学生成绩,找出最高分, 并输出学生成绩等级 一.题目 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为'A' 成绩>=最高分-20 等级为'B' ...
- 【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django 部署套件:centos6.9+nginx+mysql+uwsgi+python3+django 首先还是要明白这几个部分之间的关系(自己也是初学者,希望 ...
- java例题_28 冒泡排序
1 /*28 [程序 28 排序算法] 2 题目:对 10 个数进行排序 3 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推, 4 即用第二个元素与后 ...
- CVE-2020-1472 Zerologon
CVE-2020-1472 Zerologon 漏洞简介 CVE-2020-1472是继MS17010之后一个比较好用的内网提权漏洞,影响Windows Server 2008R 2至Windows ...
- 干货!Apache Hudi如何智能处理小文件问题
1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...
- python基础(一):变量和常量
变量 什么是变量 变量,用于在内存中存放程序数据的容器.计算机的核心功能就是"计算",CPU是负责计算的,而计算需要数据吧?数据就存放在内存里,例如:将梁同学的姓名,年龄存下来,让 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...
- c# 输出一个数组
关于C#输出一个数组最普遍的方法就是用for 循环语句写 如: int[] a = new int[10];for (int i = 0; i < a.Length; i++) { a[i] = ...
- 【深度学习】PyTorch CUDA环境配置及安装
Pytorch版本介绍 torch:1.6 CUDA:10.2 cuDNN:8.1.0 安装 NVIDIA 显卡驱动程序 一般 电脑出厂/装完系统 会自动安装显卡驱动 如果有 可直接进行下一步 下载链 ...
- ES6 第一天
study in bilibili: es6视频教程(无废话版) 关键字: let 代码块内起作用,不会代码提升 const 常量 ES6结构赋值 作用:解析解构,然后自动赋值,简化程序员代码编写: ...