Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP删除与python请求模块_Python_Http_Python Requests_Http Delete - Fatal编程技术网

HTTP删除与python请求模块

HTTP删除与python请求模块,python,http,python-requests,http-delete,Python,Http,Python Requests,Http Delete,我想使用python请求模块执行HTTP DELETE,该模块遵循下面的API 我正在使用PythonV2.7和请求模块。我的python代码如下所示 def clear(channel_id): data = {} data['api_key'] = 'DUCYS8xufsV613VX' URL_delete = "http://api.thingspeak.com/channels/" + str(channel_id) + "/feeds" r

我想使用python请求模块执行HTTP DELETE,该模块遵循下面的API

我正在使用PythonV2.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
dict转换为json字符串

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

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

谢谢经测试,答案是正确的。第二种方法有效。有一件事我不明白。为什么
r=requests.delete(URL\u delete,mydata)
失败,但
r=requests.delete(URL\u delete,params=mydata)
有效?对于HTTP Post,我不需要使用参数。为什么不同?如果你看看。您可以看到
post
被定义为
post(url,data=None…
),而delete被定义为
delete(url,**kwargs)
。kwargs意味着它必须是一个“关键参数”。post有效,因为它显式列出了一些参数。
headers = {'APIKEY': 'xxx'}
response = requests.delete(url, data=json.dumps(payload), headers=headers)