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'} )