美文网首页
Requests模块详解(二)

Requests模块详解(二)

作者: Aaron_fcff | 来源:发表于2020-07-23 14:34 被阅读0次

前言:上一章节已说明了如何请求接口、为接口传递参数的情况。但是日常生活中,大部分接口都需要用到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是什么意思呢?其实它是一种反映接口当前的情况,有几种大类:

image.png
如果你使用r.status_code获取状态码,它仅仅表示接口能请求,并不代表返回你想要的正确的数据;就像上述请求不带请求头部status_code也是200,但是报文中却是显示你未登录。同理,你也可以使用r.raise_for_status()检查类似发生500的情况。当然,你仍然要check报文的内容是否为预想结果。
  • 断言(pytest模块):assert r.json()['code'] == 200,这样就万无一失了。

相关文章

网友评论

      本文标题:Requests模块详解(二)

      本文链接:https://www.haomeiwen.com/subject/ebpclktx.html