• 三、requests模块访问接口(get/post)


    访问接口

    excel: openpyxl

    requests:python 当中访问http 

    一、安装requests

    cmd命令:pip install requests

    扩展:

    Requests库中有7个主要的函数,分别是 request() 、get() 、 head() 、post() 、put() 、patch() 、delete() 。这七个函数中request()函数是其余六个函数的基础函数,其余六个函数的实现都是通过调用该函数实现的。

    可以利用 response.raise_for_status() 语句去捕捉异常,该语句在方法内部判断r.status_code是否等于200,如果不等于,则抛出异常。

    try:
        response=requests.get(url)
        response.raise_for_status() #如果状态不是200,则引发异常
    except:
        print("产生异常")
    二、发送GET请求
    import requests
    # 发送get请求,需要传递参数,URL
    url_1 = 'http://api.keyou.site:8000/interfaces/'
    res = requests.get(url_1)
    
     # 请求interface数据
    
    headers = {
    "Authorization":"JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImxlbW9uMSIsImV4cCI6MTU5MTcwMTA2OSwiZW1haWwiOiJsZW1vbjEwMEBxcS5jb20ifQ.zPlnFGKfpGfcp-c2Ahiq3QsYoFkHywRu-Fw2fKgIzs0"
    }
    
    res = requests.get(url_1,headers=headers)
    
    # 响应对象
    print(res)
    
    # 响应状态吗
    print(res.status_code)
    
    # 获取返回的数据(获取文本,返回字符串格式)
    print(res.text)
    
    # 返回二进制数据(图片类型都是二进制形式)
    print(res.content)
    
    # 经常使用json(返回的是字典格式dict)
    # 注意:如果接口返回的不是json格式,要使用text,否则会报错
    print(res.json())

    三、发送POST请求

    发送参数的方式

    • URL:?=query string 查询字符串 GET请求使用的是query string

    • 放在请求体body中:form-data 、raw:里面用json的格式

    • 放在请求头header中

    根据接口文档选择数据传输格式

    1)form表单格式传输数据

    import requests
    #发送post请求
    url = 'http://api.keyou.site:8000/user/login/'
    
    #发送form表单格式数据
    user_info= {
        "username":"lemon1",
        "password":"123456"
    }
    
    res = requests.post(url,data = user_info)#data关键字参数,表示form表单格式数据,data关键字把content-Type设置成form格式
    
    #获取响应信息
    print(res)
    print(res.text)
    print(res.content)
    print(res.json())

    2)发送json格式数据

    import requests
    #发送post请求
    url = 'http://api.keyou.site:8000/user/login/'
    
    user_info= {
        "username":"lemon1",
        "password":"123456"
    }
    
    #发送form表单格式数据
    # res = requests.post(url,data = user_info)
    
    #发送json格式数据,
    res = requests.post(url,json=user_info) # json关键字把content-Type设置成application/json格式
    
    #获取响应信息
    print(res)
    print(res.text)
    print(res.content)
    print(res.json())

    3)url中用query string中传参

    import requests
    #发送post请求
    url = 'http://api.keyou.site:8000/user/login/'
    
    user_info= {
        "username":"lemon1",
        "password":"123456"
    }
    
    #发送query string
    res = requests.post(url,params = user_info)
    
    #获取响应信息
    print(res)
    print(res.text)
    print(res.content)
    print(res.json())

    4)获取response信息

    import requests
    url_1 = 'http://api.keyou.site:8000/interfaces/'
    url_2 = 'http://api.keyou.site:8000/user/login/'
    
    user={
    "username":"lemon1",
    "password":"123456"
    }
    
    # 获取token
    res = requests.post(url_2,data=user)
    res_data = res.json()
    token = res_data['token']
    
    # 访问interface接口
    headers = {
    "Authorization":"JWT {}".format(token)
    }
    
    res = requests.get(url_1,headers=headers)
    print(res.json())

    四、requests封装

    import logging
    import requests
    
    # 访问接口封装
    def visit(
            url,
            params=None,
            data=None,
            json=None,
            method='get',
            **kwargs
    ):
    '''访问接口,返回字典 res.json()'''
        res = requests.request(method,url,params=params, data=data,json=json,**kwargs)
        try:
            return res.json()
        except Exception as e:
            logging.error("返回数据不是json格式:{}".format(e))
        return None
    
    if __name__ == '__main__':
    # 参数关联
        url_1 = 'http://api.keyou.site:8000/user/login/'
        url_2 = 'http://api.keyou.site:8000/interfaces/'
        info = {
            "username": "lemon1",
            "password": "123456"
        }
        user_info = visit(url_1,method='post',json=info)
        token = user_info['token']
        # 传递token
        headers = {
            "Authorization": "JWT {}".format(token)
        }
        data = visit(url_2,method='get',headers=headers)
        print(data)
  • 相关阅读:
    LeetCode20 有效的括号
    函数的多个参数
    定义一个函数的基本语法 函数的参数
    函数
    金字塔
    水仙花数
    百鸡百钱
    循环demo
    while适用于不确定循环次数
    浏览器打断点
  • 原文地址:https://www.cnblogs.com/zhangjx2457/p/13730982.html
Copyright © 2020-2023  润新知