在传统的方法中, 我们使用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()
- 我们发现POST方法更加给力,把原来的6行变成了1行。这是因为不但解码省略了,就连编码也省略了。
- 对于传输字典,使用json=表明用application/json方式,在DJ项目中要使用json.loads(request.body)解包。使用data=表明用application/form-urlencode方式提交,可直接使用request.POST提取字典。建议在WEB2.0时代,统一使用第一种方式。
网友评论