使用python请求模块删除HTTP

时间:2015-08-28 06:23:04

标签: python http python-requests http-delete

我想使用遵循以下API的python请求模块进行HTTP DELETE;

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

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)

我正在使用python v2.7并请求模块。我的python代码看起来像这样;

{{1}}

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

2 个答案:

答案 0 :(得分:4)

你想要

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字符串。

答案 1 :(得分:2)

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

UPDATE [DEV_CMS_Medical].[dbo].[SEC_Menus]
SET ActionNamec = ControllerName, 
    ControllerName = ActionName