使用requests进行http请求

在传统的方法中, 我们使用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请求)