哈喽各位大佬好,今天是要写一个post服务,调用还是post,全post,参考我之前的博文,这里再次看看坑在哪里。
For Recommendation in Deep learning QQ Group 277356808
For deep learning QQ Second Group 629530787
I'm here waiting for you
不接受这个网页的私聊/私信!!!
欢迎关注微信视频号:小明哥直播间
1-做个post服务
先看传来的数据格式,data=param为字典,如下:
post(url, data=None, json=None, **kwargs)
Sends a POST request.
:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary, list of tuples, bytes, or file-like
object to send in the body of the :class:`Request`.
:param json: (optional) json data to send in the body of the :class:`Request`.
:param **kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response ` object
:rtype: requests.Response
此时的服务若采用get形式,那么无论是post形式的调用得不到任何数据,
#服务 flask.request.args.get #调用 post形式,无论数据是data还是json,有没有json.dumps都一样获取不到数据
如果是get_json那么json直接传字典或者data采用json.dumps均可
>>> requests.post(url3,data=json.dumps(data)).json()
{ 'userid': 'xiaomingge'}
>>> requests.post(url3,json=data).json()
{'userid': 'xiaomingge'}
如果要传data为直接的字典格式,无json-dumps包装,只能用get_data(不带参数)然后得到如下形式:
b'userid=xiaomingge&num=100&userid2=xmg'
解码后手动分割即可,我目前没有想到更高效的方法。
2-post请求
无论是json或data形式,都可以采用data-decode解码后json-loads后得到最终的字典形式。感谢同事大佬。
愿我们终有重逢之时,而你还记得我们曾经讨论的话题。【0924】
再次验证:只有是json形式才可以,post就json-loads,get就get-json。
【0926】
事实证明,我的猜测是正确的,
如果想传递有嵌套的字典(就是字典中套字典),那么要么对它进行序列化(data=dumps),要么就是json=大字典,否则服务端解析不出来嵌套的字典,云程序员别瞎吹牛逼了,累死你也解析不出来。因为在传递时数据已经丢了。
如果你确定传递的字典就是单纯的key-value,没有字典套字典,也没有value为其他数据格式的,value仅为数值或者字符串的,你随便玩都可以。



