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

Posted cnhkzyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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":"注册成功"}

 

以上是关于request方法传入动态参数的一个"误区"的主要内容,如果未能解决你的问题,请参考以下文章

传入一个数组和2个字符串 以及后台如何接收

requests 请求参数口诀

Java:Servlet能不能将request传入其他方法,然后在其他方法中跳转页面呢?怎么把request传过去呢?

怎么动态给java注解参数赋值?

RF--执行案例时动态传入参数方法

java HttpPost传入参数中文乱码