前言:上一章节已说明了如何请求接口、为接口传递参数的情况。但是日常生活中,大部分接口都需要用到header(请求头部)来说明到访者的身份信息或包含一些其他重要信息。
一、请求头部?
请求头部是告诉服务器以什么格式、身份等访问,就好比你去访问一位朋友家时,需要告诉他你是谁?(token)你带了多少人来?(content-length)以什么形式来?(content-type)等等。
二、为请求添加头部
import requests # 导入requests库
header = {'Authorization': 'xxx'} # 如果不传头部
r2 = requests.post('https://xxx.io/user/chains',json={'pageSize':10,'pageIndex':1})
print(r2.json())
返回的是,未登录的提示:{'code': 10001, 'msg': 'User Not Login'}
,这时候为请求添加头部:
(在requests库中,头部的关键字是headers,以字典的形式传输)
import requests # 导入requests库
header = {'Authorization': 'xxx'} # 传头部
r2 = requests.post('https://xxx.io/user/chains',json={'pageSize':10,'pageIndex':1},heaers=header)
print(r2.json())
最后,返回的是{'code': 200, 'msg': 'success', 'data': []}
,下面说明一下头部中基本关键字的作用
- Content-Type:表示后面的文档属于什么MIME类型,Servlet默认显式地指定为text/html,移动端则多用application/json
- Authorization/Token/LoginToken:授权信息,如保存一些登陆信息
- Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据
- User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关,则该值非常有用
- Cookie/Session:用户本地终端上的数据(通常经过加密),由用户[客户端]暂时或永久保存的信息
三、响应内容
看到上述的响应结果,{'code': 200, 'msg': 'success', 'data': []}
,你可能有疑问code:200
是什么意思呢?其实它是一种反映接口当前的情况,有几种大类:
如果你使用
r.status_code
获取状态码,它仅仅表示接口能请求,并不代表返回你想要的正确的数据;就像上述请求不带请求头部status_code也是200,但是报文中却是显示你未登录。同理,你也可以使用r.raise_for_status()
检查类似发生500的情况。当然,你仍然要check报文的内容是否为预想结果。
- 断言(pytest模块):
assert r.json()['code'] == 200
,这样就万无一失了。