首页 > 其他分享 >requests模块实例

requests模块实例

时间:2023-11-13 15:46:23浏览次数:38  
标签:res data self param 实例 模块 kwargs requests type

import requests
import json

class HandleRequest:
    param_type_dict = {
        'form': 'application/x-www-form-urlencoded',
        'data': 'application/x-www-form-urlencoded',
        'json': 'application/json',
        'file': 'multipart/form-data',
        'files': 'multipart/form-data',
        'params': 'query string',
        'param': 'query string',
        None: 'NoneType',}

    def init(self):
        # 创建会话对象
        self.session = requests.Session()

    def handle_param(self, param_value):
        if isinstance(param_value, str):
            try:
                param_value = json.loads(param_value)
            except Exception:
                param_value = eval(param_value)
        return param_value

    def send(self, url, method="POST", param_type=None, param_data=None, **kwargs):
        """
        :param url: 请求url
        :param method: 请求方法
        :param_type: q请求参数类型
        :param kwargs: headers请求头字典, cookies等其他可变参数
        :return: Response对象
        """
        # 如果param_type为字符串,那么转化为小写,否则赋值为None
        param_type = param_type.lower() if isinstance(param_type, str) else None
        # 判断param_type是否为param_type_dict中的键值
        if param_type not in self.param_type_dict :
            raise Exception(f"param_type值错误")
        if param_type == "json":
            kwargs["json"] = self.handle_param(param_data)
        elif param_type in ["file", "files"]:
            kwargs["files"] = self.handle_param(param_data)
        elif param_type in ["data", "form"]:
            kwargs["data"] = self.handle_param(param_data)
        elif param_type in ["params", "param"]:
            kwargs["params"] = self.handle_param(param_data)

        if method is None:
            method = "POST"
        return self.sesson.requests(method=method, url=url, **kwargs)

    def handle_return(self, response):
        if re.match(r'^2', str(response.status_code)):
            res = AttrDict(**json.loads(response.text))
            return res
        else:
            raise Exception(f"请求错误,请求响应为{response.status.code}")

if __name__ == '__main__':
    a = HandleRequest()
    res = a.send(url, method, param_type, param_data)
    res = a.handle_return(res)
    if res['ret']:
        print('成功')
    else:
        print(f"失败:{res['errMsg']}")
        

标签:res,data,self,param,实例,模块,kwargs,requests,type
From: https://www.cnblogs.com/tcjl/p/17829295.html

相关文章

  • JTAG Tap | JTAG: FTDI的 AN_129(JTAG Tap+JTAG简介及其FT4232H配成USB to JTAG使用实
    ApplicationNotes/AN_129_FTDI_Hi_Speed_USB_To_JTAG_Example.pdf1.2JTAGbackgroundToday'selectroniccircuitsconsistofnumerouscomplexintegratedcircuits.AtypicalembeddedsystemcancontainmultipleCPUs,programmabledevices,memory,etc.Wi......
  • BOSHIDA DC电源模块的电阻或电位器对输出电压的调节
    BOSHIDADC电源模块的电阻或电位器对输出电压的调节DC电源模块是电子设备中广泛应用的一种电源模块,它能够将交流电转换为稳定的直流电,并为其他电路或设备提供所需的电源。在一些场合中,需要对DC电源模块的输出电压进行调节,这是通过电阻或电位器来实现的。 DC电源模块中的电阻......
  • DC电源模块的电阻或电位器对输出电压的调节
    BOSHIDADC电源模块的电阻或电位器对输出电压的调节DC电源模块是电子设备中广泛应用的一种电源模块,它能够将交流电转换为稳定的直流电,并为其他电路或设备提供所需的电源。在一些场合中,需要对DC电源模块的输出电压进行调节,这是通过电阻或电位器来实现的。DC电源模块中的电阻或电位......
  • DP4301-M无线模块一款SUB-1G无线收发模块无线抄表智能家居手持设备
    DP4301-M无线模块是一款低成本高效率工作于1GHz以内的收发模块,支持中国智能电无线集抄标准470MHz~510MHz,兼容433MHzISM/SRD频段均可使用。此模块且前已经超大量应用于国标智能无线抄表及物联网自组网等双向数据传输系统方案,模块具备的低功耗、高接收灵敏度、高发射功率诸多优......
  • [LeetCode] 715. Range 模块
    题目Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为半开区间的范围并查询它们。半开区间[left,right)表示所有left<=x<right的实数x。实现RangeModule类:RangeModule()初始化数据结构的对象。voidaddRange(intleft,intright)添加半开区......
  • 若依分离版打包部署后找不到模块(Error: Cannot find module ‘@/views/index‘)
    将store/moudules/permission.js这一块改成下面这样,注释的可以删exportconstloadView=(view)=>{return(resolve)=>require([`@/views/${view}`],resolve)//if(process.env.NODE_ENV==='development'){////}else{////使用import实现生产环境的......
  • go中标记一个模块内容为过时
    今天在使用标准库ioutil时发现已经过时,是通过在注释上添加实现的。例如://WsHandlerFuncislikeHandleFuncinGin.////Deprecated:Notsupport.typeWsHandlerFuncfunc(*websocket.Conn)在goland中调用时就会提示已废弃。......
  • vue无法正确使用mastache渲染实例
    问题:<script>varvm=newvue({el:"#app",data:{message:"hello,vue!"}});</script>这段代码中,`vm`是通过`newVue()`创建的一个Vue实例。但是在HTML文件中,`<divid="app">`元......
  • JVM系列-第7章-对象的实例化内存布局与访问定位-cnblog
    title:JVM系列-第7章-对象的实例化内存布局与访问定位tags:-JVM-虚拟机categories:-JVM-1.内存与垃圾回收篇keywords:JVM,虚拟机。description:JVM系列-第7章-对象的实例化内存布局与访问定位。cover:'https://gitee.com/youthlql/randombg/raw/master/lo......
  • CSS实例-切换开关
    在线展示:矩形开关圆形开关代码:<!--矩形开关--><labelclass="switch"><inputtype="checkbox"><spanclass="slider"></span></label><!--圆形开关--><labelclass="switch">&......