使用Python的requests库作接口测试——对HTTP动词的支持
2024-09-05 16:23:45
Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE。
动词GET-查看提交信息
HTTP GET是一个幂等的方法,从给定的URL返回一个资源。因而,当你试图从一个web位置获取数据之时,你应该使用这个动词。
举个栗子:从Github上获取关于一个特定commit的信息
>>> import requests
>>> r = requests.get('https://api.github.com/repos/kennethreitz/requests/git/commits/a050faf084662f3a352dd1a941f2c7c9f886d4ad')
我们应该确认Github是否正确响应。如果正确响应,我们想弄清响应内容是什么类型的。
可见,GitHub返回了JSON数据,非常好,这样就可以使用 r.json
方法把这个返回的数据解析成Python对象。
# 将json对象转成python字典
>>> commit_data = r.json()
# 获取所有键
>>> print commit_data.keys()
[u'committer', u'author', u'url', u'tree', u'html_url', u'sha', u'parents', u'me
ssage']
# 打印commiter键的内容
>>> print commit_data[u'committer']
{u'date': u'2012-05-10T18:10:50Z', u'name': u'Kenneth Reitz', u'email': u'me@ken
nethreitz.com'}
# 打印message键的内容
>>> print commit_data[u'message']
makin' history
OPTIONS动词-查看接口方法
如果服务器正确实现了OPTIONS,那么服务器应该在响应头中返回允许用户使用的HTTP方法。
>>> verbs = requests.options('http://a-good-website.com/api/cats')
>>> print verbs.headers['allow']
GET,HEAD,POST,OPTIONS
但是通常好多服务器并未实现OPTIONS方法。这是一个恼人的疏忽,但没关系,那我们可以使用枯燥的文档来查看接口支持的方法。
POST动词-发表评论
发表评论,这里需要身份验证。
>>> from requests.auth import HTTPBasicAuth
>>> auth = HTTPBasicAuth('fake@example.com', 'not_a_real_password')
>>> r = requests.post(url=url, data=body, auth=auth)
>>> r.status_code
201
>>> content = r.json()
>>> print(content[u'body'])
Sounds great! I'll get right on it.
PATCH动词-编辑评论
DELETE动词-删除评论
HEAD动词-只查看响应的头部
最新文章
- 你知道JavaScript中的结果值是什么吗?
- 无废话ExtJs 入门教程五[文本框:TextField]
- jQuery学习笔记(一):入门【转】
- hdu 5476 Explore Track of Point(2015上海网络赛)
- 迭代器、泛型和增强For
- tencent://message协议
- C/C++易错小记录
- js 类似发微博或者微信朋友圈的时间显示 刚刚 几天前
- vim: 自己定义颜色主题(colorscheme)
- Json填充到Form中
- 逆向-攻防世界-logmein
- windows 环境下 dbnamodb 环境搭建与使用
- AI学习---数据IO操作&;神经网络基础
- Python全栈学习_day001作业
- 第6章 静态路由和动态路由(4)_OSPF动态路由协议
- react-native android 报错 error calling Appregistry.runApplication
- Mockito 中被 Mocked 的对象属性及方法的默认值
- 643. Maximum Average Subarray I
- JVM垃圾回收器之G1(Garbage First)--new
- 17 Go Slices: usage and internals GO语言切片: 使用和内部
热门文章
- 2019-7-3-如何通过命令行-msbuild-编译项目
- LuoguP3498 [POI2010]KOR-Beads
- Python全栈开发:configparser模块
- mysql之备份表和备份数据库
- [JZOJ5233] 【GDOI模拟8.5】概率博弈
- 廖雪峰Java15JDBC编程-3JDBC接口-1JDBC简介
- Java写爬虫代码时报org.apache.http.client.ClientProtocolException: URI does not specify a valid host异常的处理
- memcache课程---2、php如何操作memcache
- LintCode刷题笔记-- A+B problem
- python多线程建立代理ip池