带有python请求的HTTP删除modu

2024-10-06 12:03:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python请求模块做一个HTTP删除,它遵循下面的API

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()只能接受一个参数。正确的代码应该是什么样子?


Tags: 模块key代码httpscomapiidurl
2条回答

你想要的

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)

不需要将mydatadict转换为json字符串。

您可以按照@Eugene的建议发送数据参数,但通常的delete请求只包含url而不包含其他内容。原因是RESTful url应该唯一地标识资源,从而消除了为删除提供额外参数的需要。另一方面,如果“APIKEY”与身份验证有关,那么它应该是头的一部分,而不是请求数据,如下所示。

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

相关问题 更多 >