晚上寫了一個請求類,傳了一個動態參數進去,實例化測試的時候,發現請求數據根本沒法讀到,先附上代碼
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":"注冊成功"}