在学习过程中我们想知道我们发送处的http格式是什么样子的,是否符合我们的要求,寻找一个这样的工具,满足验证测试需要。
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/Httpbin
开源地址:https://github.com/postmanlabs/httpbin
2、Httpbin部署[linux下部署]
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'
。
(2).linux下的docker下运行
Run locally:$ docker run -p 80:80 kennethreitz/httpbin
3.windows下部署使用
【目前没有测试成功!】
安装多个文件包,各种依赖不兼容!
4、Httpbin访问方式
Httpbin
的使用方法非常简单,你只需要把请求的地址修改为httpbin.org
即可。
比如:GET请求:http://httpbin.org/get
如果使用本地部署的Httpbin
服务,访问:http://127.0.0.1:[自己设置的端口号]
5、Httpbin常用调试接口
常用接口列表:
Endpoint | Descirption |
---|---|
/ip | 返回请求者的IP地址。 |
/user-agent | 返回传入请求的User-Agent参数。 |
/headers | 返回传入请求的请求头参数。 |
/get | GET请求的提交参数。 |
/post | POST请求的提交参数。 |
/patch | PATCH请求的提交参数。 |
/put | PUT请求的提交参数。 |
/delete | DELETE请求的提交参数。 |
实例:
1.返回你使用的访问网络的电脑的ip地址:
浏览器中输入:
https://httpbin.org/ip
结果:返回一个json数据--->你本机访问网络的地址
{
"origin": "16.41.121.6"
}
2.https://httpbin.org/headers
浏览器中输入:
返回的是“头信息”
{
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Host": "httpbin.org",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
"X-Amzn-Trace-Id": "Root=1-63942f9e-1b3e2a254528a0107fb283e5"
}
}
3.调用接口,返回GET请求的详细信息
https://httpbin.org/get?name=tom&pwd=123456
{
"args": {
"name": "tom",
"pwd": "123456"
},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Host": "httpbin.org",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
"X-Amzn-Trace-Id": "Root=1-63943038-7038ccaf66e060b07d63c09a"
},
"origin": "11.12.112.67",
"url": "https://httpbin.org/get?name=tom&pwd=123456"
}
6.数据测试验证
1.postman中验证,直接在post位置输入
https://httpbin.org/post
获取数据内容如下:
2.https://httpbin.org/post?name=tom&pwd=99999
参数的请求“?name=tom&pwd=99999”
3.在请求头中添加数据,key,value9
结果:
4.在请求体body中添加数据【raw-json数据】,添加的
{
"name":"zhangsan",
"age":21,
"address":"beijing"
}
5.form表单的使用
https://httpbin.org/forms/post