前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Requests库(二十)为什么请求的json字段传入dict格式才正确而不是json格式

Requests库(二十)为什么请求的json字段传入dict格式才正确而不是json格式

作者头像
雷子
发布2021-03-15 15:56:04
9390
发布2021-03-15 15:56:04
举报
文章被收录于专栏:雷子说测试开发

Requests库分享系列:

Requests库(一)

Requests库(二)

Requests库(三)如何获取接口传参参数

Requests库(四)如何传递不一样的参数

Requests库(五)接口返回状态码

Requests库(六)接口返回响应头和请求Cookies

Requests库(七)重定向和超时

Requests(八)代理和会话对象

Requests库(九)准备的请求和SSL 证书验证

Requests库(十)接口请求认证

Requests库(十一)实战请求钉钉群机器人

Requests库(十二)实战获取今日头条24小时热文

Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻

Requests库(十四)一文揭秘如何获取快手关注的视频

Requests库(十五)一文解决解析text/html格式返回数据

Requests库(十六)一文展示如何利用Requests请求xml格式接口

Requests库(十七)一文展示如何利用Requests发送form表单请求

Requests库(十八)Requests发送application/x-www-form-urlencoded请求

Requests库(十八)复杂json解析


前言

更正一个错误,在上一次分享的Requests库(十八)复杂json解析,应该为第19篇笔误。本篇是第二十篇。

本次分享源于在微信群里有人问的一个问题,为什么在requests请求的时候,参数中有一个json的字段,传入dict就可以正常,传入json dumps后的数据请求就报错。这是为啥呢,我在群里已经做过了,分享,这里我在讲解下当时我的思路。

原因出现在哪里

首先来说,按照我们的习惯的来说的话,有json参数,就应该传入json的字符串,但是我们传入json的字符串就请求发送后了,预期不是我们想要的,但是我们传入dict 结果就是正确的,按说,不应该啊,那么这是为啥呢,看到这里,我的想法就是是不是内部做了什么处理呢,于是乎开始查找问题的根本。

首先呢,我点击post方法,用command+左键。进入

这里就直接返回了。然后我们去看下request的方法是什么。

这个方法里呢,是调用了session的requests,那么我们看看这里面是实现了什么。

然后里面的方法如下

我们可以看到参数是在这里对应的,然后传入给prepare_request

那么我们继续看看prepare_request实现了什么?

参数最后给了

代码语言:javascript
复制
PreparedRequest的prepare方法,那么这里面做了什么呢我们接下来去探究下,

还是command进去。

我们在这里可以看到,所有的最后都给了prepare_body的方法,我们看下这个方法实现了什么,过来之后,我们看到了如下的方法。

json最后调用complexjson的dumps,那么这里应该就是了json这给处理,

这里就是把json内部封装给解决了处理了dict,内部直接转换成json,所以你只需要传入dict即可。特别方便把。

问题的答案就是在这里,内部给你处理好了,当初我在群里也是这么回复的,其实问题很简单,查看里面的代码怎么实现的就知道了。里面的代码很简单,也很好找,顺着思路找下去即可。

写在最后

问题的原因其实很简单,不复杂,问题的答案其实就隐藏在源码中,可能你不知道为啥,但是你要去看就能知道里面的原因,一些问题不复杂,只要你去解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SymantecSSL 证书
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档