目录
  • 认识requests模块
    • 1、requests介绍
    • 2、使用requests发起get或者post请求
    • 3、关于post/put/delete请求中,data参数和json参数格式
    • 4、Respobse对象
  • 实战
    • 1、发起post请求
    • 2、发起get请求
  • 总结

    认识requests模块

    1、requests介绍

    requests是一个第三方库,因此首先需要安装这个库,安装三步走:

    • 安装:pip install requests
    • 在文件中引用这个模块:import requests
    • 使用这个库发起一个请求(get请求、post请求等)

    2、使用requests发起get或者post请求

    • 使用requests的post方法发起post请求
    import requests  
    resp = requests.post(api_url,json=req_data)
    • 使用requests的request方法发起post请求
    import requests
      resp = requests.request("post",api_url,json=req_data)

    说明:这样做,每调用一次requests.request就会去实例化一次Session类

    • 所有的请求都在一个会话当中

    如果是session鉴权或者coockies鉴权,可以直接利用Session类实例化。

    这样做了就不用额外处理了,直接利用会话对象s发起请求,如下所示:

    import requests
    s = requests.Session()
       resp = s.request(method,api_url,json=req_data)

    3、关于post/put/delete请求中,data参数和json参数格式

    • json参数

    json参数:requests库,针对请求体格式为application/json的,独自写了一个json参数的处理机制,数据类型是字典。因此,如果使用接送传参,只需要将参数写为字典的格式即可发起请求。

    • data参数

    data参数:data为字典类型,默认的请求体格式为的application/x-www-form-urlencoded。

    4、Respobse对象

    响应数据返回主要有几下几类:

    • resp.status_code — 获取响应状态码
    • resp.headers — 获取响应头
    • resp.text — 获取响应数据
    • resp.json() — 把json格式的响应数据,转换成python字典

    实战

    1、发起post请求

    • 如何抓包获取要模拟的接口详情:

    • 以下编写代码:
    import requests
     
    # 请求url
    url = "https://openapiv5.ketangpai.com//UserApi/login"
     
    '''请求方法'''
    method = "post"
    # 如果是post请求,需要查看请求头当中的content-type的数据格式类型
    '''请求体数据'''
    req_data = {
                    "email":"18812345678",  # 随意写的
                    "password":"f876543",   # 随意写的非真实
                    "remember":"0","code":"",
                    "mobile":"",
                    "type":"login",
                    "reqtimestamp":1697007648530}
     
    '''第一种方法:使用requests的post方法发起post请求'''
    # rt = requests.post(url=url,json=req_data)
    # '''获取响应的原始数据'''
    # print(rt.text)
    # '''查看获取响应的原始数据的数据类型'''
    # print(type(rt))  # <class 'requests.models.Response'>
    # '''把响应的json数据,转换成python字典。'''
    # print(rt.json())
    # print(type(rt.json()))      # 字典类型
    # print(rt.status_code,"\n",rt.headers,"\n\n",rt.cookies)
     
    '''第二种方法:使用request方法发送post请求'''
    respose = requests.request(method,url,json=req_data)
    print(respose.text)    # 结果与上述一致
     
    '''
    使用session方法进行请求数据
    '''
    s = requests.Session()
    resp = s.request(method,url,json=req_data)
    print("http响应数据(原始):",resp.text)

    2、发起get请求

    盘点一下get请求的参数:

    • params参数:get请求,请求参数一般是拼接在url后面的,因此请求参数使用params参数(字典类型)
    • headers参数:字典类型。用户项目需要添加到请求头的,传参给它。
    • verify参数:遇到发起https请求的时候,要证书。 将verify=False就可以关掉证书要求,可以发送https请求

    代码实战

    1、抓包找到我们要做get请求实战的接口

    2、使用代码编写get请求发送

    注意:接口连贯时,需要添加链接点“token”,才可以获取响应的完整信息

    from time import sleep
    import requests
     
    # 请求url
    url = "https://openapiv5.ketangpai.com//UserApi/login"
     
    '''请求方法'''
    method = "post"
    # 如果是post请求,需要查看请求头当中的content-type的数据格式类型
    '''请求体数据'''
    req_data = {
                    "email":"18829489142",
                    "password":"fangbang666",
                    "remember":"0","code":"",
                    "mobile":"",
                    "type":"login",
                    "reqtimestamp":1697007648530}
     
    '''
    连续上个文件的post请求,从登录接口中获取token
    '''
    '''
    使用session方法进行请求数据
    '''
    s = requests.Session()
    resp = s.request(method,url,json=req_data)
    # print("http响应数据(原始):",resp.text)
    # print(resp.json())
    # 获取token,提供给下文
    token = resp.json()["data"]["token"]
     
    # 暂停6秒针
    sleep(6)
     
    url = "https://openapiv5.ketangpai.com//TourApi/isTourV2"
    method = "get"
    params = {
                "version" : 32,
                "courseid" : "MDAwMDAwMDAwMLOGy5WHqbdshNtyoQ"
                }
    # 往请求头里面,添加鉴权的token处理
    headers = {"token":token}
    # 发请求的时候,带上请求头
    res = requests.request(method,url,params=params,headers=headers)
    print(res.text)

    结果如下:

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持小闻网。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。