Aplique a biblioteca de solicitações em python para simular a solicitação do carteiro para carregar o token e use os métodos get e post para solicitar o cabeçalho para transportar o token

fundo:

No desenvolvimento real, o programa Python precisa chamar a interface de segundo plano para atuar como front-end, e o back-end estipula que o cabeçalho da solicitação precisa carregar o token

Classes get e post encapsuladas:

class RequestMethodCarryJson:
    """
    定义请求类型
    以json方式传递参数
    """

    def __init__(self):

        """初始化参数"""
        self.data = {}
        self.files = {}

    def get(self, url, data, headers):
        """
        定义get方法请求
        :return:
        """
        try:
            return requests.get(url=url, data=data, headers=headers, timeout=60)
        except TimeoutError:
            return print('%s get request timeout!' % url)

    def getCarryToken(self, url, data, headers):
        """
        定义get方法请求
        :return:
        """
        try:
            return requests.get(url=url, json=data, headers=headers, timeout=60)
        except TimeoutError:
            return print('%s get request timeout!' % url)

    def post(self, url, data, headers):
        """
        定义post方法请求
        post携带token,看起来不需要像get那样添加一个getCarryToken特有的识别方法
        :return:
        """
        try:
            return requests.post(url=url, data=json.dumps(data), headers=headers, timeout=60)
        except TimeoutError:
            return print('%s post request timeout!' % url)
class RequestMethodCarryFormData:
    """
    定义请求类型
    以表单方式form-data传递参数
    """

    def __init__(self):

        """初始化参数"""
        self.data = {}
        self.files = {}

    def get(self, url, data, headers):
        """
        定义get方法请求
        :return:
        """
        try:
            return requests.get(url=url, data=data, headers=headers, timeout=60)
        except TimeoutError:
            return print('%s get request timeout!' % url)

    def getCarryToken(self, url, data, headers):
        """
        定义get方法请求,额外添加token
        :return:
        """
        try:
            return requests.get(url=url, json=data, headers=headers, timeout=60)
        except TimeoutError:
            return print('%s get request timeout!' % url)

    def post(self, url, data, headers):
        """
        定义post方法请求
        这个携带json应该不需要额外改
        :return:
        """
        try:
            return requests.post(url=url, data=data, headers=headers, timeout=60)
        except TimeoutError:
            return print('%s post request timeout!' % url)

Cenário de aplicação:

Cenário 1——Os cabeçalhos carregam o token quando recebem a solicitação [passar parâmetros no formato json]:

​token="里面填token内容"
test1Info = test1(token)

def test1(token):
    """
    携带token,
    访问平台已经存在的数据库,
    以json格式传递数据
    :param token:
    :return:
    """
    url = "http://127.0.0.1:8088/backup/url1"
    headers = {'Content-Type': 'application/json;charset=utf-8', 'token': token}
    data = dict()
    data["param1"] = "param1"
    data["param2"] = "param2"
    resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json()
    dbInfo = resp["items"]
    return dbInfo

Cenário 2——Os cabeçalhos carregam o token durante a solicitação de postagem [passar parâmetros no formato application/x-www-form-urlencoded (formulário)]:

token="里面填token内容"
test2Info = test2(token)

def test2(token):
    url = "http://127.0.0.1:8088/testFormData/json/transfer"
    headers = {'Content-Type': 'application/x-www-form-urlencoded', 'token': token}
    data = dict()
    data["param1"] = "param1"
    """
    这里不接受状态码
    """
    resp = RequestMethodCarryFormData().post(url, data, headers).json()
    info = resp["items"]
    if info == "格式正确":
        return True
    else:
        return False

Cenário 3 - Resuma o código bem-sucedido após pisar no poço:

    """
    请求头携带token拿取信息:
    1-post-以json格式传递数据,请求头携带token成功
    形如:
    # resp = requests.post(url,json=data,headers=headers).json()
    resp = RequestMethodCarryJson().post(url, data, headers).json()


    2-get-以json格式传递数据,请求头携带token成功
    # resp = requests.get(url,json=data,headers=headers).json()
    resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json()

    :param platformInfo:
    :return:
    """

Entendimento estendido:

Referência de informações relacionadas:

A diferença entre dados de formulário e x-www-form-urlencoded no carteiro - programador procurado

solicitações python com cabeçalho de solicitação Token para iniciar http request_python request token_Software Testing Li's Blog

Quando o python enviar solicitações, use o valor do token de login como as informações do cabeçalho da solicitação da próxima interface

Acho que você gosta

Origin blog.csdn.net/Elephantpretty/article/details/131697868
Recomendado
Clasificación