120-cookie持久化3/接口库登录态接口cookie保持对话功能

参考大佬文章:120
【a不是字典】

Api_send

登陆态接口被调用:

把之前的请求代码放到了else里,新的if分支中判断了下返回体设置,然后声明了a,然后a进行请求登陆态接口,然后直接省略后面一切步骤,返回a即可。

普通接口调用:

在接收的时候对登陆态返回的东西用类型判断一下,就知道是字典还是a了,若是a,那就是说明登陆态设置的是cookie持久化,那么普通接口的请求代码也要改,也要从requests.request改成a.request方法了

需要判断login_res的类型看看是不是cookie持久化,若是,那么后面的所有具体不同的请求体类型的请求代码,直接全换即可

插入url中:
增加if ,来判断login_res的类型,若是字典的情况,才会进行插入,否则就是cookie,不需要插入到url

    if '?' not in url:
        url += '?'
        if type(login_res) ==dict:
            for i in login_res.keys():
                url += i + '=' + login_res[i] + '&'
    else:
        if type(login_res) == dict:
            for i in login_res.keys():
                url += '&' + i + '=' + login_res[i]

插入header:

    if type(login_res) == dict:
        header.update(login_res)

请求体:

如果是字典那么还是之前的requests.request,如果不是,那么就是cookie持久化,那么就用a.requests来请求,此时a就是login_res,login_res是调用登陆态接口函数返回的东西

其中只有为字典时,才需要进行遍历插入请求体的代码,若不是,那么就直接用login_res请求就可以

    try:
        if ts_body_method == 'none':
            if type(login_res) == dict:
                response = requests.request(ts_method.upper(), url, headers=header, data={})  # 请求方式大写、URL、头部、数据
            else:
                response = login_res.request(ts_method.upper(), url, headers=header, data={})  # 请求方式大写、URL、头部、数据

        elif ts_body_method == 'form-data':
            files = []
            payload = {}  # 字典
            for i in eval(ts_api_body):
                payload[i[0]] = i[1]
            if type(login_res) == dict:
                for i in login_res.keys():
                    payload[i] = login_res[i]
                response = requests.request(ts_method.upper(), url, headers=header, data=payload, files=files)
            else:
                response = login_res.request(ts_method.upper(), url, headers=header, data=payload, files=files)

        elif ts_body_method == 'x-www-form-urlencoded':
            header['Content-Type'] = 'application/x-www-form-urlencoded'
            payload = {}  # 字典
            for i in eval(ts_api_body):
                payload[i[0]] = i[1]
            if type(login_res) == dict:
                for i in login_res.keys():
                    payload[i] = login_res[i]
                response = requests.request(ts_method.upper(), url, headers=header, data=payload)
            else:
                response = login_res.request(ts_method.upper(), url, headers=header, data=payload)

        elif ts_body_method == 'GraphQL':
            header['Content-Type'] = 'application/json'
            query = ts_api_body.split('*WQRF*')[0]
            graphql = ts_api_body.split('*WQRF*')[1]
            try:
                eval(graphql)
            except:
                graphql = '{}'
            payload = '{"query":"%s","variables":%s}' % (query, graphql)
            if type(login_res) == dict:
                response = requests.request(ts_method.upper(), url, headers=header, data=payload)
            else:
                response = login_res.request(ts_method.upper(), url, headers=header, data=payload)

        else:  # 五个raw子选项
            if ts_body_method == 'Text':
                header['Content-Type'] = 'text/plain'
            if ts_body_method == 'JavaScript':
                header['Content-Type'] = 'text/plain'
            if ts_body_method == 'Json':
                ts_api_body = json.loads(ts_api_body)
                for i in login_res.keys():
                    ts_api_body[i] = login_res[i]
                ts_api_body = json.dumps(ts_api_body)
                header['Content-Type'] = 'text/plain'
            if ts_body_method == 'Html':
                header['Content-Type'] = 'text/plain'
            if ts_body_method == 'Xml':
                header['Content-Type'] = 'text/plain'
            if type(login_res) == dict:
                response = requests.request(ts_method.upper(), url, headers=header, data=ts_api_body.encode('utf-8'))
            else:
                response = login_res.request(ts_method.upper(), url, headers=header, data=ts_api_body.encode('utf-8'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值