接口请求封装
访问一个接口,通常有get、post、put、delete方式
封装这些方法,需要注意三大要点:
- 请求方法:method
- 请求地址:url
- 请求参数:headers,params,data,json
首先,定义一个类,处理HTTP请求,在这个类中,使用 session 进行会话
import requests
class HTTPHandler:
# 初始化
def __init__(self):
self.session = requests.Session()
# 定义一个方法,接收访问http请求的方式
def visit(self,url,method,headers=None,params=None,data=None,json=None,**kwargs):
if method.lower() == 'get':
res = self.session.get(url=url,params=params,**kwargs)
elif method.lower() == 'post':
res = self.session.post(url=url,heraders=headers,params=params,data=data,json=json,**kwargs)
try :
return res.json()
except ValueError:
print('return not json')
这种方式,需要对每一种请求方式,都进行处理,比较麻烦,其实,requests.Session() 里面有一个 request() 方法,封装了这些操作,我们就不需要每一个方法都进行处理
import requests
class HTTPHandler:
# 初始化
def __init__(self):
self.session = requests.Session()
# 定义一个方法,接收访问http请求的方式
def visit(self,url,method,heraders=None,params=None,data=None,json=None,**kwargs):
res = self.session.request(method,url,heraders=headers,params=params,data=data,json=json,**kwargs)
try :
return res.json()
except ValueError:
print('return not json')
也可以通过Ctrl + 鼠标左键,点击 self.session.request 中的 request 查看底层代码
所以,直接调用这个方法就行了
session会话
在正常情况下,会自己关闭,但是为了代码的严谨性,在HTTPHandler
类中,最好是写一个方法,关闭这个 session会话
import requests
class HTTPHandler:
# 初始化
def __init__(self):
self.session = requests.Session()
# 定义一个方法,接收访问http请求的方式
def visit(self,url,method,heraders=None,params=None,data=None,json=None,**kwargs):
res = self.session.request(method,url,heraders=headers,params=params,data=data,json=json,**kwargs)
try :
return res.json()
except ValueError:
print('return not json')
# 关闭session会话
def close_session(self):
self.session.close()