2020年6月29日--18--requests实现cookies鉴权和token鉴权的方式以及使用函数进行封装

1. 使用requests实现cookies鉴权的方式

'''
==================================
cooding:utf-8
@Time    :2020/6/29 23:15
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :requests实现cookies鉴权.py
@Software:PyCharm
===================================
'''

'''
Session类:创建一个会话对象,
发起一个请求话,
'''
import requests     # 引入requests 库

# 第一种方法自动去获取
# 第一步引入
sess = requests.Session()    # 实例化Session类
print('登录之前的cookies:',sess.cookies)

# 第二步 - 登录,得到coolies鉴权
my_url = 'https://www.ketangpai.com/UserApi/login'   # 接口地址
my_data = {'email':'15112552411',              # 登录数据
           'password':'928321weiL',
           'remember':'0'}
resp = sess.post(my_url,data=my_data)    # 使用post方法获取
print('登录响应的coolies:',resp.cookies)

print('登录之后的cookies:',sess.cookies)   # 主动会将响应的set-cookies添加到sess对象当中

# 第三步:获取用户信息
use_url = 'https://www.ketangpai.com/UserApi/getUserInfo'  # 接口地址
res = sess.get(use_url)   #  使用get方法获取
print(res.json())    # 打印出数据

# 第二种方法:需要自己主动获取cookies,并在后续的请求中,主动加上cookies
# 第一步 - 登录,得到coolies鉴权
my_url = 'https://www.ketangpai.com/UserApi/login'   # 接口地址
my_data = {'email':'15112552411',              # 登录数据
           'password':'928321weiL',
           'remember':'0'}
we = requests.post(my_url,data=my_data)   # 使用post方法获取

# 主动获取coolies
cookies = we.cookies
# print(cookies)

# 第二步:获取用户信息
use_url = 'https://www.ketangpai.com/UserApi/getUserInfo'  # 接口地址
res = requests.get(use_url,cookies=cookies)   #  使用get方法获取
print(res.json())    # 打印出数据

2. 使用requests实现token鉴权的方式

'''
==================================
cooding:utf-8
@Time    :2020/6/29 23:53
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :requests实现token鉴权.py
@Software:PyCharm
===================================
'''
import requests   # 引入requests

headers = {'X-Lemonban-Media-Type':'lemonban.v2'}        # 请求头

# 第一步:登录,拿取token
url = 'http://api.lemonban.com/futureloan/member/login'   # 登录接口地址
data = {"mobile_phone":"18723488722","pwd":"wertuyiop"}   # 登录请求体数据
res = requests.post(url,json=data,headers=headers)    # 使用post方法
print(res.json())   # 得到正确的响应
# 可以使用for循环来获取
# for key,value in res.json().items():
#     print(key,value)

my_dict = res.json()
token = my_dict['data']['token_info']['token']    # 获取到tokend的值
print(token)  # 查看token值
member_id = my_dict['data']['id']    # 获取到充值的id的值
print(member_id)  # 查看token值

# 第二步:充值,将token添加到请求头当中 :Authorization:Bearer 空格 token 值
headers['Authorization']='Bearer {}'.format(token)   # 添加需要的请求头,动态的添加token值
print(headers)   # 打印新的请求头

recharge_url = 'http://api.lemonban.com/futureloan/member/recharge'  # 充值接口地址
recharge_data = {"member_id":member_id,"amount":10}    # 充值请求体数据(动态获取member_id)
rec = requests.post(recharge_url,json=recharge_data,headers=headers)    # 使用post方法
print(rec.json())    # 查看是否充值成功

3. 基于定制化的接口封装

'''
==================================
cooding:utf-8
@Time    :2020/6/29 21:13
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :requests封装.py
@Software:PyCharm
===================================
'''

# 封装函数第一个版本

'''
基于项目做的接口定制化封装
需要考虑如下:
1.有什么样的鉴权:token
2.项目通用的请求头:{'X-Lemonban-Media-Type':'lemonban.v2'}
3.请求体格式:'Content-Type':'application/json'

'''
import requests   # 引入requests

# 请求头部处理
def __request_header(token=None):   # 请求头,定一个参数传递,默认token值为空
    '''
    处理请求头,加上项目当中必带的请求头,如果有token,加上token
    :param token: token值
    :return: 处理之后的header字典
    '''
    headers = {'X-Lemonban-Media-Type':'lemonban.v2',
               'Content-Type':'application/json'}   # 没有token值得请求头
    if token:    # 如果token值不为空
        headers['Authorization'] = 'Bearer {}'.format(token)  # 添加需要的请求头,动态的添加token值
    return headers   # 返回请求头


# 发送请求
def sennd_requests(method, url, data=None, token=None):   # 定义参数传递(method(请求方法),url地址,data(不传时为空),token(不传时为空))
    '''

    :param method:  请求的方法GET或者POST
    :param url:   请求的接口地址
    :param data:  请求的数据,有就传,没有就不传
    :param token: 如果有token,就加上token
    :return:  返回处理之后值
    '''
    # 得到请求头
    headers = __request_header(token)   # 拿到请求头
    # 根据请求类型,调用请求方法
    method = method.upper()  # 传进来的请求方法大写处理
    if method == 'GET':    # 如果method值 == 'GET'方法,调用这个方法
        resp = requests.get(url, data, headers=headers)    # 调用requests的get请求(接口地址,数据,请求头)
    else:                  # 如果method值 == 'POST'方法,调用这个方法
        resp = requests.post(url, json=data, headers=headers)  # 调用requests的post请求(接口地址,json格式的数据,请求头)
    return resp      # 返回响应数据


if __name__ == '__main__':

    # 登录请求
    my_url = 'http://api.lemonban.com/futureloan/member/login'  # 登录接口地址
    my_data = {"mobile_phone": "15112552466", "pwd": "Qwe11298o2"}  # 登录请求体数据
    resp = sennd_requests('post',my_url,my_data)    # 传参(方法,接口地址,登录数据)
    print(resp.json())            # 查看登录的响应数据
    token = resp.json()["data"]["token_info"]["token"]    # 获取动态的token值
    member_id = resp.json()['data']['id']      # 获取动态的id值

    # 充值请求
    recharge_url = 'http://api.lemonban.com/futureloan/member/recharge'  # 充值接口地址
    recharge_data = {"member_id": member_id, "amount": 100}  # 充值请求体数据,id(动态获取member_id)和充值金额(amount)
    resp = sennd_requests('post', recharge_url, recharge_data,token)       # 传参(方法,接口地址,登录数据,动态的token值)
    print(resp.json())         # 查看充值后的响应数据

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值