request 发送多层字典
a. 客户端向服务端发送多层字典的值
#客户端发送 obj = { 'data':{ "k1":"v1", "k2":"v2" }, 'status': True } #json发送 requests.post("http://www.baidu.com",json=obj) #发送数据内部默认处理(会在内部把字典obj json.dumps序列成字符串,发送给服务端) #body: json.dumps(obj) #headers= {'content-type':'application/json'} #默认加入 #服务端接受上面格式发送的数据 if request.method == 'POST': obj = json.loads(request.body.decode('utf-8'))
b. request.post 和request.body
#接受 requests.boby - 请求体原生的值 requests.POST - 根据特殊的请求头从requests.boby获取数据,不能接受多层字典的数据
c. 三者相等
#方式一: requests.post("http://www.baidu.com",json=obj) #方式二: requests.post( url="http://www.baidu.com", headers={'content-type':'application/json'}, data=json.dumps(obj) ) #方式三(): requests.post( url="http://www.baidu.com", headers={'content-type':'application/json'}, data=bytes(json.dumps(obj),encoding="utf-8") )
d. 一般使用
requests.post( url="", data={"name":"alex","pwd":123}, #把数据解析成 data = "user=alex&pwd=123" headers={'content-type':'application/x-www-form-urlencoded'} )
但不能接受多层字典的数据,接受第二层字典只能接受key,不能接受value
#headers= {'content-type':"application/x-www-form-urlencoded
requests.post( url="", json={"name":"alex"}, #会把数据解析成大的字符串 headers={'content-type':'application/json'} )