request方法传入动态参数的一个"误区"

晚上写了一个请求类,传了一个动态参数进去,实例化测试的时候,发现请求数据根本没法读到,先附上代码

import requests class MyRequests: def send_request(self, method, url, **kwargs): if method.lower()== "get": res = requests.request(method, url, params=kwargs) elif method.lower() == "post": res = requests.request(method, url, data=kwargs) print(res.text) mr = MyRequests() mr.send_request("get", "http://localhost:8080/futureloan/mvc/api/member/register",params={"mobilephone":"13923715845","pwd":"test123"})

期望的数据是注册成功,但是怎么试都是手机号为空

{"status":0,"code":"20103","data":null,"msg":"手机号不能为空"}

为什么?问题就出在if判断之后,如果请求方式是get,就让params=kwargs,如果请求方式是post,data=kwargs,但是实例化的时候就出问题了,**kwargs要求必须以关键字参数(key=value的形式)传入,传入的是params={"mobilephone":"13923715845","pwd":"test123"}),这时候经过if判断后,就成了

res = requests.request(method, url, params='params={"mobilephone":"13923715845","pwd":"test123"}')

这种请求参数,服务器当然是识别不到参数"mobilephone"和"pwd"了,所以这是一个容易出问题的写法,如何避免呢?

import requests class MyRequests: def send_request(self, method, url, **kwargs): res = requests.request(method, url, **kwargs) print(res.text) mr = MyRequests() mr.send_request("get", "http://localhost:8080/futureloan/mvc/api/member/register",params={"mobilephone":"13923715845","pwd":"test123"})

这就得到了我们想要的结果

{"status":1,"code":"10001","data":null,"msg":"注册成功"}

 


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/9315634.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(1593)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示