使用python请求模块删除HTTP

use*_*486 5 python http http-delete python-requests

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

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

DELETE https://api.thingspeak.com/channels/4/feeds
       api_key=XXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

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

Eug*_*e K 5

你要

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

您必须使用命名的输入“数据”,而我猜测您实际上是要转储JSON,因此您必须将字典“ mydata”转换为json字符串。您可以使用json.dumps()。

我不知道您正在使用的API,但是从声音的角度来看,您实际上想要传递URL参数,而不是数据,为此您需要:

r = requests.delete(URL_delete, params=mydata)
Run Code Online (Sandbox Code Playgroud)

无需将mydatadict 转换为json字符串。

  • 如果您查看https://github.com/kennethreitz/requests/blob/master/requests/api.py。您可以看到“ post”被定义为“ post(url,data = None ...)”,而删除被定义为“ delete(url,** kwargs)”。变态意味着它必须是一个“关键论点”。该帖子的工作是因为它明确列出了一些参数。 (3认同)