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

    技术2022-07-11  134

    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()) # 查看充值后的响应数据

    Processed: 0.010, SQL: 9