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":"注冊成功"}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM