• 接口自动化:2. requests第三方库


    学习前提,先复习下面向对象的知识点。

    ----------

    1. 安装requests:pip install requests

    2. 了解常用方法:

    requests.get()    传入url,params
    requests.post()     传入url,data用于传参,json也用于传参【是用data还是json可以看content_type值;也可用json.dumps()进行转化,详细见下】
    requests.put()
    requests.delete()
    requests.request() 可以发送所有类型的请求:get,post,put,delete
     
    data和json传参以及content-type的关系如下:
    1. data传参:报文是dict类型,那么默认content-type:/x-www-form-urlencoded
    datachuancan:报文是str类型,那么默认content_type:text/plain
    2. json传参:报文是dict类型,那么默认content-type:application/json
    总结:data可以传纯键值对的dict(非嵌套的dict),也可以传str格式。(如果是嵌套的字典,就需要使用json.dumps()把嵌套字典转化为json字符串传参)
    json可以传任何形式的dict(包括嵌套的dict)
     
    json.loads() 把json字符串转化为dict格式
    json.dumps() 把dict格式转化为json字符串
     
    3. requests模块返回的response对象详解
    res.json() 获得返回的json对象,字典格式数据
    res.text() 获得返回的字符串格式的数据
    res.content() 获得返回的bytes字节类型的数据
    res.status_code() 返回状态码
    res.reason() 返回状态信息
    res.cookies 返回cookie信息
    res.headers 返回响应头
    res.request xxx 返回请求的数据,如:请求头,请求参数...
     
     
    ----------------------------------------------------------------------------------------
    实践代码如下:
    import requests


    #定义类
    class TestRequest:
        #定义属性--略
        #定义方法名--实现一个get请求:获取首页header接口请求
        def test_get_header(self):
            url = 'https://test-api.vistopia.com.cn/api/v1/home/header'
            params = {
                'api_token':'',
                'req_time':1641441350,
                'sign':'fa6a58c19fdfe6454e1de26e41e98fd1'
            }

            res = requests.get(url=url,params=params)
            print(res.json())

        #定义方法名--实现一个post请求:
        def test_post_cancel_subscriptions(self):
            url = 'https://test-api.vistopia.com.cn/api/v1/auth/post-login'
            #根据抓包看content_type类型,判断是用json还是data传参
            json = {
                'password':123456,
                'phone': 15600780168,
                'sign': '4224d2d3bfd288b7727b5e88771eaa91',
                'api_token':'',
                'area_code':86,
                'req_time':1642669481
            }

            res = requests.post(url=url,json=json)
            print(res.json())


    #调用类的方法

    if __name__ == '__main__':
        TestRequest().test_get_header()
        TestRequest().test_post_cancel_subscriptions()
     
    ------------------------------------------------------------------------------------------
    关于接口关联,比如第二个接口会用到第一个接口返回的值
    设置全局变量,类变量 如a=‘’
    第一个接口的值进行赋值:类名.变量 = res.json()【‘字段名’】
    第二个接口直接使用如:access token = “+变量名.a”
     
    -------------------------------------------------------------------------------------------
    其实:不管是get还是post还是put和delete,都是调用的requests.request方法,而requests.request方法调的是session.request方法。
    请求四要素:请求方式;请求路径,方式传参,请求头【若跑不通,则判断是否需要cookie鉴权 或 session鉴权】
    method 请求方式
    url 请求路径
    params=none get方式传参
    data=none post方式传参
    headers=none 请求头
    cookies=none 请求cookie
    files=none 文件上传
     
    代码:
     

  • 相关阅读:
    腾讯课堂——基础数据类型(dict字典)
    腾讯课堂——基础数据类型(tuple元祖)
    基础数据类型(list列表)
    第 018讲:函数:灵活即强大(关键字函数,默认函数,收集函数)
    第 015讲:字符串:格式化
    第 013讲: 元组tuple 上了枷锁的列表
    第 012讲:打了激素的数组3
    第 011讲:一个打了激素的数组[02]
    range函数的用法
    第 010讲:一个打了激素的数组[01]
  • 原文地址:https://www.cnblogs.com/cudy/p/15827443.html
Copyright © 2020-2023  润新知