Requests库分享系列:
Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻
Requests库(十五)一文解决解析text/html格式返回数据
Requests库(十六)一文展示如何利用Requests请求xml格式接口
Requests库(十七)一文展示如何利用Requests发送form表单请求
Requests库(十八)Requests发送application/x-www-form-urlencoded请求
Requests库(二十)为什么请求的json字段传入dict格式才正确而不是json格式
前言
在真正的项目中呢,我们需要使用Requests库,但是直接使用呢,感觉没有那么顺手,我们想要简单封装下,返回的请求数据,我们想要处理过的请求数据,做更多的异常处理,在底层处理代码异常,而不是在用例中,去处理一些异常,所以就要对请求做简单的封装。
思路
主要封装常用的方法,对一些常见请求方法进行处理,对请求中的一些常见的异常进行一些提前的处理,在正常写接口用例的时候,就可以简单的直接上手来使用了。当然了,封装只是一个大概的封装,大家可以根据自己的实际去进行封装。下面我们看看封装后的代码,其实特别简单。
代码展示
import requests, jsonfrom requests import Timeout,RequestException
class requ(): def __init__(self): self.headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:51.0) Gecko/20100101 Firefox/51.0"}
def get(self, url, params): # get消息 try: r = requests.get(url, params=params, headers=self.headers) r.encoding = 'UTF-8' if r.status_code==200: json_response = json.loads(r.text) return {'code': 0, 'result': json_response} else: return {'code': 1, 'result': '接口请求失败,返回状态码:%s'%str(r.status_code)} except Timeout as e: return {'code': 1, 'result': '请求超时:%s' % e} except RequestException as e: return {'code': 1, 'result': '请求异常:%s' % e} except Exception as e: return {'code': 1, 'result': 'get请求出错,出错原因:%s' % e}
def post(self, url, params): # post消息 data = json.dumps(params) try: r = requests.post(url, data=data, headers=self.headers) if r.status_code == 200: json_response = json.loads(r.text) return {'code': 0, 'result': json_response} else: return {'code': 1, 'result': '接口请求失败,返回状态码:%s' % str(r.status_code)} except Timeout as e: return {'code': 1, 'result': '请求超时:%s' % e} except RequestException as e: return {'code': 1, 'result': '请求异常:%s' % e} except Exception as e: return {'code': 1, 'result': 'post请求出错,出错原因:%s' % e}
def delparams(self, url, params): # 删除的请求 try: del_word = requests.delete(url, params=params, headers=self.headers) if del_word.status_code == 200: json_response = json.loads(r.text) return {'code': 0, 'result': json_response} else: return {'code': 1, 'result': '接口请求失败,返回状态码:%s' % str(del_word.status_code)} except Timeout as e: return {'code': 1, 'result': '请求超时:%s' % e} except RequestException as e: return {'code': 1, 'result': '请求异常:%s' % e} except Exception as e: return {'code': 1, 'result': 'del请求出错,出错原因:%s' % e}
def putparams(self, url, params): # put请求 try: data = json.dumps(params) result = requests.put(url, data) if result.status_code == 200: json_response = json.loads(r.text) return {'code': 0, 'result': json_response} else: return {'code': 1, 'result': '接口请求失败,返回状态码:%s' % str(result.status_code)} except Timeout as e: return {'code': 1, 'result': '请求超时:%s' % e} except RequestException as e: return {'code': 1, 'result': '请求异常:%s' % e} except Exception as e: return {'code': 1, 'result': 'put请求出错,出错原因:%s' % e}
后续
以上的封装只是一些简单的手段,但是可能有一些更好的解决的封装方式,大家可以根据自己的实际项目工作的需要,按照自己的需求进行封装。