前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Requests库(二十一)Requests请求的简单封装

Requests库(二十一)Requests请求的简单封装

作者头像
雷子
发布2021-03-15 15:54:22
6820
发布2021-03-15 15:54:22
举报
文章被收录于专栏:雷子说测试开发

Requests库分享系列:

Requests库(一)

Requests库(二)

Requests库(三)如何获取接口传参参数

Requests库(四)如何传递不一样的参数

Requests库(五)接口返回状态码

Requests库(六)接口返回响应头和请求Cookies

Requests库(七)重定向和超时

Requests(八)代理和会话对象

Requests库(九)准备的请求和SSL 证书验证

Requests库(十)接口请求认证

Requests库(十一)实战请求钉钉群机器人

Requests库(十二)实战获取今日头条24小时热文

Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻

Requests库(十四)一文揭秘如何获取快手关注的视频

Requests库(十五)一文解决解析text/html格式返回数据

Requests库(十六)一文展示如何利用Requests请求xml格式接口

Requests库(十七)一文展示如何利用Requests发送form表单请求

Requests库(十八)Requests发送application/x-www-form-urlencoded请求

Requests库(十八)复杂json解析

Requests库(二十)为什么请求的json字段传入dict格式才正确而不是json格式


前言

在真正的项目中呢,我们需要使用Requests库,但是直接使用呢,感觉没有那么顺手,我们想要简单封装下,返回的请求数据,我们想要处理过的请求数据,做更多的异常处理,在底层处理代码异常,而不是在用例中,去处理一些异常,所以就要对请求做简单的封装。

思路

主要封装常用的方法,对一些常见请求方法进行处理,对请求中的一些常见的异常进行一些提前的处理,在正常写接口用例的时候,就可以简单的直接上手来使用了。当然了,封装只是一个大概的封装,大家可以根据自己的实际去进行封装。下面我们看看封装后的代码,其实特别简单。

代码展示

代码语言:javascript
复制
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}

后续

以上的封装只是一些简单的手段,但是可能有一些更好的解决的封装方式,大家可以根据自己的实际项目工作的需要,按照自己的需求进行封装。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SymantecSSL 证书
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档