美文网首页
使用requests进行http请求

使用requests进行http请求

作者: 豪门百里 | 来源:发表于2017-10-28 00:12 被阅读173次

    在传统的方法中, 我们使用urllib.request来进行http请求。但我最新发现,requests包要比这种方法先进很多。接下来我分别介绍GET和POST方法。

    一、GET方法

    # 旧代码
    import urllib.request
    import json
    result_instance = urllib.request.urlopen(url)
    result_json = result_instance.read().decode('utf-8')
    result_dict = json.loads(result_json)
    
    # 新代码
    import requests
    result_dict = requests.get(url_get).json()
    

    新方法不但可以自动解码,还可以自动解析json使之变成python字典。用了新方法后,json包除了个别的API格式要求之外,再也没有用武之地了。

    二、POST方法

    # 旧代码
    post_url = 'https://oapi.dingtalk.com/user/create?access_token=' + session
    para = {
        "userid": staffid,
        "name":name,
        "department": [department_id],
        "mobile": phone,
        "jobnumber": staffid,
    }
    jsonStr=json.dumps(para).encode()
    post_headers = {'Content-Type': 'application/json'}
    request_result_post = urllib.request.Request(post_url,jsonStr,post_headers)
    result_instance = urllib.request.urlopen(request_result_post)
    result_json = result_instance.read().decode()
    result_dict = json.loads(result_json)
    
    # 新代码
    post_url = 'https://oapi.dingtalk.com/user/create?access_token=' + session
    post_dict = {
        "userid": staffid,
        "name":name,
        "department": [department_id],
        "mobile": phone,
        "jobnumber": staffid,
    }
    result_dict = requests.post(post_url, json=post_dict).json()
    
    1. 我们发现POST方法更加给力,把原来的6行变成了1行。这是因为不但解码省略了,就连编码也省略了。
    2. 对于传输字典,使用json=表明用application/json方式,在DJ项目中要使用json.loads(request.body)解包。使用data=表明用application/form-urlencode方式提交,可直接使用request.POST提取字典。建议在WEB2.0时代,统一使用第一种方式。

    相关文章

      网友评论

          本文标题:使用requests进行http请求

          本文链接:https://www.haomeiwen.com/subject/kcxjpxtx.html