# 封装get和post
import logging
import requests
class RequestsCookieHandler:
def __init__(self):
self.session = requests.Session()#用一个session去接收
def get(self, url, params, **kw): # **kwargs是不定长参数,headers是放在这个不定长参数里
# '''封装一个get方法,发送get请求'''
try: # 当处理不成功时,比如URL地址输入方式错误,或者接口超时timeout,需要抛出一个异常
res = self.session.get(url, params=params, **kw)
except TimeoutError:
# 记录日志信息,放入logger里边,这样我们就能知道问题出在哪里
logging.error('访问不成功')
else:
return res
def post(self, url, data=None, json=None, **kw):
# '''封装一个post方法,发送post请求'''
try: # 当处理不成功时,比如URL地址输入方式错误,或者接口超时timeout,需要抛出一个异常
res = self.session.get(url, data=data, json=json, **kw) # 其中data是form表单形式的
except TimeoutError:
# 记录日志信息,放入logger里边,这样我们就能知道问题出在哪里
logging.error('访问不成功')
else:
return res
# vist方法是整合接口请求的方法
def vist(self, method, url, params=None, data=None, json=None, **kw):
'''访问接口'''
'GET,如果传输进来的是大写的GET。可以使用lower方法'
if method.lower == 'get':
return self.get(url, params=params, **kw)
elif method.lower == 'post':
return self.post(url, data=data, json=json, params=params, **kw)
# 如果接口中还有其他的请求方式比如put,option之类色,可以用下方的方法,实际工作中常用的是get和post
else:
return self.session.request(method, url, **kw)
def json(self, method, url, params=None, data=None, json=None, **kw): # json是要再vist方法下去进行进一步的处理
'''访问接口,获取json数据'''
res = self.vist(url, method, params=params, data=data, json=json, **kw)
# 获取json数据
try:
return res.json()
except:
# 记录日志信息
logging.error('不是json格式的数据')
总结tips:
1、需要一个初始化的方法init,用 session来接收cookie,session是requests库的一个管理器
2、将上一篇文章中的requests替换成self.session就可以啦