python - TypeError:“数据”是此函数的无效关键字参数
问题描述
我正在尝试修改函数request
以根据 api 调用采用不同的参数。例如:在 中post_categories
,我需要它发送第三个参数data
,其中包含我要发布的正文,但该get_categories
函数不需要第三个参数。我添加**kwargs
到请求功能,但这是我得到的错误:TypeError: 'data' is an invalid keyword argument for this function
class ApiGateway():
base_url = 'https://api.com/v3/'
def request(self, method, endpoint, **kwargs):
url = f'{self.base_url}{endpoint}'
kwargs.setdefault('headers', {})
kwargs['headers'].update({
'Authorization': f'Bearer ${self.token}',
'Accept': 'application/json',
})
response = requests.request(method, url, **kwargs)
return response.json()
def get_categories(self, merchant_id):
endpoint = f'merchants/{merchant_id}/categories'
return self.request('GET', endpoint)
def post_categories(self, merchant_id):
update = {
'payment_method': {
'token': 1234,
'data': '123556'
}
}
endpoint = f'merchants/{merchant_id}/categories'
return self.request('POST', endpoint, data=json.dumps(update))
解决方案
我找到了解决方案。我必须指定我想传递给request
函数的数据类型,而不是将数据作为 kwargs 参数传递。我刚刚更新了这部分post_categories
功能return self.request('POST', endpoint, data=json.dumps(update))
,所以现在功能看起来像这样
def post_categories(self, merchant_id):
update = {
'payment_method': {
'token': 1234,
'data': '123556'
}
}
endpoint = f'merchants/{merchant_id}/categories'
return self.request('POST', endpoint, json=update) # <-- updated third parameter
推荐阅读
- c# - 列表中的动态泛型类
- android-fragments - 如何在没有活动的片段中保存状态开始破坏Android Studio
- javascript - 在使用全局唯一标识符/srcdoc 创建的 iframe 上强制执行哪个 CSP?
- javascript - 删除 html 元素中的重复内容中的字符串
- visual-studio-code - VS Code 调优:在面板中合并资源管理器、搜索和源代码控制
- flutter - 尝试从 Stream Provider 检索和显示数据时出错
- python - Flask:如何自动化 OpenAPI v3 文档?
- android - 在 Material Design Slider 中缺少 tickVisible
- excel - 重复垂直求和到另一列上的最后一个空单元格
- excel - 记录excel表1到表2上某个范围的所有变化值