我正试图使用python为几个api调用创建一个通用函数,如下所示-
import json
import requests
def api_call(url,payload,headers,request_type,auth):
response = requests.request(request_type, url, payload, auth, headers)
return response
当我直接在函数外部使用时,这是有效的,但当我调用函数并传递参数时,它会抛出如下异常。
url = "https://api.xxxxxx"
payload = json.dumps({
"Ids": ["12345","69845"],
"startDate": "2022-01-01",
"endDate": "2022-05-10"
})
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'x-api-key': 'yyyyyyyy'}
request_type = 'post'
auth = None
resp = api_call(url=url, payload=payload, headers=headers, request_type=request_type, auth=auth)
我看到的错误如下-
TypeError: request() takes 2 positional arguments but 5 were given
我该如何解决此问题?有人能给我指路吗?
谢谢!
你必须像这样反转你的函数,
def api_call(url,payload,headers,request_type,auth):
response = requests.request(request_type, url, payload=payload, headers=headers)
return response
既然auth = None
,你就不需要通过它。
request(method, url, **kwargs):
method
和url
是位置参数,rest是关键字参数