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

文件目录
  • 1、Requests库
  • 2、Requests库文本文档
  • 3、Requests库安裝
  • 4、Requests库的应用
    • (1)应用流程
    • (2)实例训练
  • 5、填补:Json数据信息和Python目标相互转换

1、Requests库

Requests库是用Python语言表达撰写,根据urllib3控制模块,选用Apache2 Licensed开源协议的 HTTP 库。

尽管Python的标准库中urllib3控制模块早已包括了平时大家应用的大部分作用,可是它的 API应用起來令人觉得不太友善。而Requests库应用的是urllib3,因而承继了它的全部特点,因此 Requests库比urllib3应用更为便捷,能够 节省大家很多的工作中,彻底达到 HTTP 检测要求。

Requests库适用HTTP 联接维持和数据库连接池,适用应用cookie 维持对话,适用上传文件,适用全自动明确回应內容的编号,适用现代化的URL 和POST 数据信息自动编号。当代、现代化、个性化。

Requests库自称为 “HTTP for Humans”(让HTTP服务项目于人们),表明应用更简约便捷。

Requests库是以 PEP 20 的人生箴言为管理中心开发设计的

  1. Beautiful is better than ugly.(漂亮好于丑恶)
  2. Explicit is better than implicit.(直接好于委婉)
  3. Simple is better than complex.(简易好于繁杂)
  4. Complex is better than complicated.(繁杂好于繁杂)
  5. Readability counts.(易读性很重要)

针对 Requests 全部的奉献都应铭记这种关键的规则。

简单点来说:Requests库等同于Python中的“电脑浏览器”,能够 根据它开展互联网要求、获得网页页面数据信息,功能齐全并且尤其功能强大。

表明PEP20

PEP20是撰写python程序流程的具体指导规则,在python shell中键入import this就能见到是撰写python程序流程的具体指导规则,在python shell中键入import this就能见到,內容以下:

TIM Peters的python之禅
The Zen of Python, by Tim Peters


唯美胜于丑恶。
Beautiful is better than ugly.

确立胜于含蓄。
Explicit is better than implicit.

简易胜于繁杂。
Simple is better than complex.

繁杂胜于晦涩难懂。
Complex is better than complicated.

平扁胜于嵌入。
Flat is better than nested.

留白艺术胜于紧凑型。
Sparse is better than dense.

易读性很重要。
Readability counts.

充分必要条件也并不可以独特到能够 违反这种标准。
Special cases aren't special enough to break the rules.

尽管应用性胜于单纯性。
Although practicality beats purity.

不正确不可被静静地忽视。
Errors should never pass silently.

除非是你确立地忽略。
Unless explicitly silenced.

应对模棱两可,不必试着去猜想。
In the face of ambiguity, refuse the temptation to guess.

应当有一种,最好仅有一种,显著的处理方法。
There should be one-- and preferably only one --obvious way to do it.

一开始那类方法并不是不言而喻,除非是你是python鼻祖。
Although that way may not be obvious at first unless you're Dutch.

搞好过不做。
Now is better than never.

不加思索就动手能力还比不上不做。
Although never is often better than *right* now.

假如完成难以表述,那么就并不是个好构思。
If the implementation is hard to explain, it's a bad idea.

假如完成便于表述,则可能是个好构思。
If the implementation is easy to explain, it may be a good idea.

类名是个绝佳的想法,我们要多多的运用它。
Namespaces are one honking great idea -- let's do more of those!

2、Requests库文本文档

  • 官方网文本文档:https://requests.readthedocs.io/en/master/
  • 汉语文本文档:https://requests.readthedocs.io/zh_CN/latest/
  • GitHub开源系统详细地址:https://github.com/psf/requests

3、Requests库安裝

安裝Requests库必要条件,必须安裝python自然环境,随后在cmdcmd中键入python -m pip install requests(强烈推荐)或是pip install requests就可以。

如下图:

image

实行pip list 查询Requests库是不是安裝取得成功,和所安裝的版本号(默认设置安裝最大版本号。)

C:Users\ailin-L>pip list 
Package 	Version 
-------		--------
certifi 	2020.12.5
chardet 	4.0.0
idna 		2.10
pip 		19.2.3
requests 	2.25.1
selenium 	3.141.0
setuptools 	41.2.0
ur11ib3 	1.25.9

4、Requests库的应用

(1)应用流程

简易介绍一下Requests库流程。

#1.导进requests库
import requests

#2.提前准备插口三要素
# 2.1 确立要求详细地址
url = "http://127.0.0.1:8000/api/departments/"
# 2.2 确立要求主要参数
# 2.3 推送要求 要求方法
response = requests.get(url=url)

# 查询传参
print(response)


# 举例说明:
# 1.导进requests库
import requests  

# 2.应用requests库
# 推送要求
response = requests.get('https://api.github.com/events')  
# 查询結果
print(response.status_code)  
print(response.headers['content-type'])  
print(response.encoding)  
print(response.json())

(2)实例训练

"""
1.个人目标
    务必把握requests库的基本上应用
2.操作流程
    # 1.导进requests库
    # 2.确立要求详细地址
    # 3.确立要求主要参数
    # 4.推送要求
3.要求
    应用requests库来要求学员智能管理系统一查看全部学校插口
4.汇总
    传参的获得
    response.text  # 获得传参文字(将传参以文档格式表明)
    response.json()  # 获得json文件格式的传参,针对传参种类为json文件格式较为友善
    response.status_code  # 获得状态码---HTTP协议书回应状态码
    response.headers  # 获得回应头
    response.content # 获得回应源代码(多用以网络爬虫)
5.json和python转换
    json.dumps(必须变换的python目标,indent=2,ensure_ascii=False)
        indent  表明恢复出厂设置輸出时缩近
        ensure_ascii=False 表明对非ascii标识符不做转换
"""
# 1.导进requests库
import requests
import json

# 2.确立要求详细地址
url = "http://127.0.0.1:8000/api/departments/"

# 3.确立要求主要参数
# 沒有主要参数无需写

# 4.推送要求
response = requests.get(url=url)
# print(response)
# 結果:<Response [200]>


# 5.获得传参內容
res = response.json()  # 会得到一个词典文件格式的目标
print(type(res))  # <class 'dict'>

# 6.python词典变换为json字符串数组
# 应用json库完成

# 将python目标变换为json字符串数组
result = json.dumps(res, indent=2, ensure_ascii=False)
print(type(result))  # 字符串类型<class 'str'>
print(result)

# json.loads()  # 将json字符串数组变换为python目标


"""
結果:(简单,有17个,只展现2个,看一下文件格式就可以)
{
  "count": 17,
  "next": null,
  "previous": null,
  "results": [
    {
      "dep_id": "T02",
      "dep_name": "Java_2学校",
      "master_name": "Java-Master",
      "slogan": "java"
    },
    {
      "dep_id": "T03",
      "dep_name": "Java_3学校",
      "master_name": "Java-Master",
      "slogan": "java"
    }
}
"""

5、填补:Json数据信息和Python目标相互转换

Python3 中能够 应用 Json控制模块来对 JSON 数据信息开展编码解码,它关键给予了四个方式 : dumpsdumploadsload

(1)dump方式 和dumps方式 表明:

dump方式 和dumps方式 对Python目标开展实例化,将一个Python目标开展JSON文件格式的编号。

json.dumps(obj, *, 
           skipkeys=False, 
           ensure_ascii=True, 
           check_circular=True,
           allow_nan=True, 
           cls=None, 
           indent=None, 
           separators=None,
           default=None, 
           sort_keys=False, 
           **kw)

表明dumps方式 中常见的好多个主要参数:

  • obj:表明是要实例化的目标。
  • ensure_ascii:初始值为True,用于操纵转化成的JSON字符串数组的编号,能将全部传到的非ASCII标识符转义輸出。假如ensure_asciiFalse,维持原来编号,则这种标识符将按原状輸出。
  • indent:能够 用于操纵JSON字符串数组的自动换行和缩近实际效果,初始值为None
    假如indent是非负整数或字符串数组,那麼JSON二维数组原素和目标组员将应用该缩近等级开展键入;
    indent为0、负值或“”仅插进换行符;
    indent应用整数缩近好几个空格符;
    假如indent是一个字符串数组(比如“\t”),则该字符串数组用以缩近每一个等级。
  • sort_keys:初始值为False,假如sort_keysTrue,则词典的輸出将功能键值排列。

别的主要参数看源代码就可以,源代码中对dumps方式 中的每一个主要参数都是有详尽的表明。

(2)load方式 和loads方式 表明:

load方式 和loads方式 对Python目标开展反序列化方式 ,将JSON文件格式数据信息编解码为Python目标。

json.loads(s, *, 
           encoding=None, 
           cls=None, 
           object_hook=None, 
           parse_float=None,
           parse_int=None, 
           parse_constant=None, 
           object_pairs_hook=None, 
           **kw):

表明loads方式 中常见的好多个主要参数:

  • s:将s(包括JSON文本文档的strbytesbytearray案例)反序列化为Python目标。
  • encoding:特定一个编号的文件格式。

别的主要参数看源代码就可以,源代码中对loads方式 中的每一个主要参数都是有详尽的表明。

留意:假如开展反序列化(编解码)的数据信息并不是一个合理的JSON文本文档,可能引起 JSONDecodeError出现异常。

(3)Python目标与 Json数据信息数据转换:

Python目标转Json数据信息:

Python JSON
dict object
list, tuple array
str string
int, float, int-&float-derived emuns number
True true
False false
None null

Json数据信息转Python目标:

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

评论(0条)

刀客源码 游客评论