1、Httpbin服务介绍

Httpbin是使用Python + Flask语言编写的一个HTTP Request & Response Service的简单服务,该服务主要用于测试 HTTP 请求,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的全部请求信息和响应信息)。

Httpbin支持HTTP/HTTPS请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 cookieipheaders 和登录验证等。能模拟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工具安装

需要分别安装Httpbinguicornguicorn是一个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服务介绍的更多相关文章

  1. 『居善地』接口测试 — 4、Requests库发送GET请求

    目录 1.使用Requests库发送带参数的GET请求 2.查看GET请求的内容 3.带请求头.参数的Get请求 Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求. ...

  2. 『居善地』接口测试 — 5、使用Requests库发送POST请求

    目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...

  3. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  4. 『居善地』接口测试 — 3、Requests库介绍

    目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...

  5. 『居善地』接口测试 — 7、Requests库使用proxies代理发送请求

    目录 1.代理的了解 2.代理的分类 (1)正向代理 (2)反向代理 (3)总结 3.Requests库使用代理 4.总结 1.代理的了解 在上图中我们可以把Web server看成是Google服务 ...

  6. 『居善地』接口测试 — 11、接口签名sign原理

    目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...

  7. 『居善地』接口测试 — 13、Moco框架的使用

    目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...

  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 ...

  9. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

随机推荐

  1. 自动统计zabbix过去一周监控告警

    # -*- coding:utf-8 -*-import jsonimport requestsimport time,datetimeimport csv,chardetdef getToken(u ...

  2. Linux(六):系统运维常用命令

    实际的生产环境下,不论是研发还是运维,或多或少的得面对在linux上定位问题这个关卡,这里介绍一下linux环境下一些状态查看常用的命令. 系统资源监控 总体资源占用情况查看 命令:top 像wind ...

  3. 跨域库herryPostMessage.js的一些优化,多iframe跨域

    旧库见文章:https://www.cnblogs.com/wuhairui/p/14595893.html 新版库主要做了下多个iframe和父页面交互的优化.主要使用构造函数的方式将多个ifram ...

  4. .NET管道应用——工作池

    名词解释 工作池:一组等待任务分配的线程.一旦完成了所分配的任务,这些线程可继续等待任务的分配. .NET管道:命名空间System.Threading.Channels中的Channel和Chann ...

  5. 2.Python进程间的通信之队列(Queue)和生产者消费者模型

    一.队列 1.1 概念介绍-----multiprocess.Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递. Queue([maxsize] ...

  6. 基于MVC框架的JavaWeb网站开发demo项目(JSP+Servlet+JavaBean)

    1.环境配置 Windows10+Eclipse2020+jdk8+Tomcat9+MySQL8+Navicat10 2.需求分析 ①用户登录注册注销(查找.增加) ②显示用户列表(查找) ③显示用户 ...

  7. 基于vite2+electron12后台管理模板|Electron后台框架系统

    前一溜时间有给大家分享一个 electron+vite跨端短视频 项目.这次分享的是vite2.x和electron实现跨平台后台框架,支持国际化多语言配置.导航菜单+树形菜单两种路由菜单模式.展开/ ...

  8. [Java] 数据类型, 变量, 运算符, 表达式

    title: [Java] 变量与表达式 你已经学会输出 Hello world 了, 那么现在, 我们来学习关于变量的知识 基本数据类型 在 Java 中, 有 8 种基本的数据类型: 名称 描述 ...

  9. 初中级php程序员面试时常见问题整理

    初中级php程序员面试问题收集 感悟 有时候草率给出一个答案,比思而无果更糟糕 php基础 php的数据类型 php数据类型的转换 php魔术方法 php 的trait的概念及特点 php 虚拟类和接 ...

  10. AliCrackme_2题的分析

    作者:Fly2015 AliCrackme_2.apk运行起来的注册界面,如图. 首先使用Android反编译利器Jeb对AliCrackme_2.apk的Java层代码进行分析. 很幸运,就找到了该 ...