使用 python 请求模块的 HTTP 删除

HTTP Delete with python requests module

我想使用下面 API 之后的 python 请求模块执行 HTTP DELETE;

https://thingspeak.com/docs/channels#create

DELETE https://api.thingspeak.com/channels/4/feeds
       api_key=XXXXXXXXXXXXXXXX

我正在使用 python v2.7 和请求模块。我的 python 代码如下所示;

def clear(channel_id):    
    data = {}
    data['api_key'] = 'DUCYS8xufsV613VX' 
    URL_delete = "http://api.thingspeak.com/channels/" + str(channel_id) + "/feeds"
    r = requests.delete(URL_delete, data)

该代码不起作用,因为 requests.delete() 只能接受一个参数。正确的代码应该是什么样的?

你想要

import json
mydata = {}
mydata['api_key'] = "Jsa9i23jka"
r = requests.delete(URL_delete, data=json.dumps(mydata))

您必须使用命名输入 'data',我猜您实际上想要转储 JSON,因此您必须将字典 'mydata' 转换为json 字符串。您可以为此使用 json.dumps() 。

我不知道您使用的 API,但听上去您实际上想要传递 URL 参数,而不是数据,因为您需要:

r = requests.delete(URL_delete, params=mydata)

无需将 mydata 字典转换为 json 字符串。

您可以按照@Eugene 的建议发送数据参数,但通常删除请求只包含 url,没有其他内容。原因是一个 RESTful url 应该唯一标识资源,从而无需提供额外的删除参数。另一方面,如果您的 'APIKEY' 与身份验证有关,那么它应该是 headers 的一部分而不是请求数据,就像这样。

headers = {'APIKEY': 'xxx'}
response = requests.delete(url, data=json.dumps(payload), headers=headers)