api_requests

#!/user/bin/python3
#  -*- coding: utf-8 -*-
# @Time      : 2020/7/7 15:32
# @Author    :Test_zhangping
# @Email     :981874735@qq.com
# @File      :api_requests.py
import requests
import json

from Class_Request_API_接口自动化.class_day6.Common.my_logger import logger
from Class_Request_API_接口自动化.class_day6.Common.handle_config import conf

def api_requests(method,url,data=None,token=None):
    """

    :param method: GET/POST/PUT/DELETE/HADE
    :param url:
    :param data: 字典形式的数据
    :param token:
    :return:
    """
    logger.info("发起HTTP请求")
    # 获取到请求头
    headers = __api_header(token)
    # 获取到完整的url -拼接url
    url = __test_url(url)
    # 请求数据的处理 -假如是字符串,转换为字典对象
    data = __test_data(data)
    # 将请求数据转换为字典对象
    logger.info("请求头:{}".format(headers))
    logger.info("请求方法:{}".format(method))
    logger.info("请求url:{}".format(url))
    logger.info("请求数据:{}".format(data))
    # 根据请求的类型,调用请求方法
    # method =[GET,POST,PUT,DELETE,HADE]
    method = method.upper() # 请求方法大写
    if method == "GET":
        resp = requests.get(url, data, headers=headers)
    elif method == "POST":
        resp = requests.post(url, data, headers=headers)
    elif method == "PUT":
        resp = requests.put(url, data, headers=headers)
    elif method == "DELETE":
        resp = requests.delete(url, data, headers=headers)
    else:
        resp = requests.head(url, data, headers=headers)
    logger.info("响应状态码:{}".format(resp.status_code))
    logger.info("响应数据:{}".format(resp.json()))
    return resp

def __api_header(token= None):
    """
    请求头处理;项目中必带请求头header
    如果有token,需要带上token
    :param token: token值
    :return: 处理之后的headers为字典格式
    """
    headers = {"X-Lemonban-Media-Type": "lemonban.v2",
               "Content-Type":"application/json"}
    if token:
        headers["Authorization"] ="Bearer {}".format(token)
    return headers

def __test_url(url):
    """

    :param url: 拼接接口url地址
    :return:
    """
    base_url = conf.get("server","base_url")
    if url.startswith("/"):
        return base_url + url
    else:
        return base_url +"/" + url

def __test_data(data):
    """

    :param data: 如果是字符串;则转换成字典
    :return:
    """
    if data is not None and isinstance(data,str): # 判断data参数是否为支付传或者为空
        return json.loads(data)# 转换为字典格式
    return data # 返回data参数后续调用

if __name__ == '__main__':
    login_url = "/member/login"
    login_datas = {"mobile_phone": "18605671115", "pwd": "123456789"}
    resp = api_requests("POST",login_url,login_datas)
    # resp.content.decode("gbk")
    # print(type(resp))
    token = resp.json()["data"]["token_info"]["token"]
    print(resp.json())

    recharge_url = "/member/recharge"
    recharge_data = {"member_id": 200713, "amount": 2000}
    resp = api_requests("POST",recharge_url,recharge_data,token)
    print(resp.json())

 

posted @ 2020-07-07 19:01  Memory荒年  阅读(206)  评论(0编辑  收藏  举报