import requests import traceback from loguru import logger class MyDict(dict): def __getattr__(self, item): value = self.get(item) if type(value) == dict: value = MyDict(value) if isinstance(value,list) or isinstance(value,tuple): value = list(value) for index,v in enumerate(value): if isinstance(v,dict): value[index] = MyDict(v) return value class MyRequest: def __init__(self,url,params=None,data=None,headers=None,files=None,json=None,timeout=5): self.url = url self.params = params self.data = data self.headers = headers self.files = files self.json = json self.timeout = timeout def __get_response(self): try: ret = self.response.json() except: logger.warning("接口返回的不是json!无法转成字典!response:{}", self.response.content) return MyDict() logger.debug("接口返回数据:{}", ret) return MyDict(ret) def __request(self,method): logger.debug("url:{},params:{},data:{},json:{},files:{},headers:{}",self.url,self.params,self.data,self.json,self.files,self.headers) try: self.response = requests.request(method,url=self.url,params=self.params,data=self.data, json=self.json,headers=self.headers,files=self.files,verify=False,timeout=self.timeout) except: logger.error("接口不通,请求出错,错误信息是:{}",traceback.format_exc()) return MyDict() return self.__get_response() def get(self): return self.__request("get") def post(self): return self.__request("post") def put(self): return self.__request("put") def delete(self): return self.__request("delete") if __name__ == '__main__': data = {"file":open("myDict.py",'rb')} r = MyRequest("http://118.24.3.41/api/file/file_uploa",files=data) # result = r.get() ret1 = r.post()