传token给食物类,通过新写一个test.py去调用登录类和食物类

#\libs\request_test.py
from
libs.login_my import Login from libs.food_my import Food # 调用登录获得token l=Login() t=l.login(is_need_token=True) # 将登录获得的token 传递给食物模块 f=Food() f.token=t # 传token给整个食物类,这样整个食物类可以直接使用token;因为基类已经将token作为属性,所以食物类可以直接传token resp_query=f.query() resp_add=f.add() resp_update=f.update() print(resp_query) print(resp_add) print(resp_update)
# libs中 login.py继承基类中的发送方法
from common.baseAPI_my import BaseAPI
class Login(BaseAPI):
    # 登录方法
    def login(self,is_need_token=False):
        # 发送请求 获得请求结果
        resp = BaseAPI.send_request(self)

        # 是否需要添加请求头
        if is_need_token:
            return resp['data']['token']
        else:
            return resp

    # 登出
    def logout(self):
        pass
if __name__ == '__main__':
    l=Login()
    res=l.login(is_need_token=False)
    print(res)
# libs 文件中 food.py继承基类中的发送方法
from common.baseAPI_my import BaseAPI
from libs.login_my import Login
class Food(BaseAPI):


    # 查询食物方法
    def query(self):
        # 发送请求 获得请求结果
        resp = self.send_request(self)
        return resp
    # 新增食物
    def add(self):
        # 发送请求 获得请求结果
        resp = self.send_request(self)
        return resp
    # 修改食物
    def update(self):
        # 发送请求 获得请求结果
        resp = self.send_request(self)
        return resp

if __name__ == '__main__':
    f=Food()
    res= f.query()
    print(res)
#common 中baseAPI.py
import inspect
import requests
from configs.config import HOST
from utils.handle_md5 import get_md5
from utils.handle_yaml import get_yaml

class BaseAPI():
    # 属性存请求体 url method
    def __init__(self,token=''):
        # 如果有token  需要放类的属性中  类中方法都可以使用
        yaml_path = '../configs/evn.yaml' # yaml的路径
        yaml_data = get_yaml(yaml_path)  # 获得整个yaml中的数据
        self.data = yaml_data[self.__class__.__name__] # 获得以继承基类的类的名称为键的 yaml中的值
        # 默认数token为空,如果商店,食品类需要token,实例化商店,传入token参数,发请求
        self.token = token

    # 方法
    def send_request(self,data='',**kwargs):
        api_data=self.data[inspect.stack()[1][3]]
        api_url=f'{HOST}{api_data["url"]}'
        if inspect.stack()[1][3]=='login':
            api_data['payload']['password']=get_md5(api_data['payload']['password'])

        resp=requests.request(method=api_data['method'],
                              url=api_url,
                              data=api_data['payload'],
                              headers={"Authorization": self.token},
                              **kwargs
                              )
        return resp.json()

 

posted @ 2023-08-21 12:42  胖豆芽  阅读(8)  评论(0编辑  收藏  举报