如何在python中进行删除/放置请求

时间:2010-07-04 22:26:02

标签: python rest httpwebrequest

我可以使用urllib进行获取或发布请求,但如何进行DELETE-和PUT请求呢?

7 个答案:

答案 0 :(得分:7)

requests库可以处理POST,PUT,DELETE和所有其他HTTP方法,并且比urllib,httplib及其变体要小得多。

答案 1 :(得分:4)

您可以使用以下内容覆盖get_method:

def _make_request(url, data, method):
    request.urllib2.Request(url, data=data)
    request.get_method = lambda: method

然后你传递“DELETE”作为方法。

This回答了解详情。

答案 2 :(得分:1)

该方法在urlopen调用

中隐式设置

当您提供数据参数时,将使用POST。

urllib.request.urlopen(url, data=None[, timeout])

由于这一行,我认为不可能对urlib使用DELETE HTTP方法:

  

<强> Request.get_method()
  返回一个字符串   指示HTTP请求方法。   这仅对HTTP有意义   请求,目前总是返回   'GET'或'POST'。

请考虑使用httplibhttplib2Twisted来更好地支持HTTP方法。

答案 3 :(得分:1)

PUT请求可以由httplib2

执行

http://code.google.com/p/httplib2

答案 4 :(得分:1)

http://twistedmatrix.com/documents/current/web/howto/client.html

如果您希望使用客户端使用HTTP进行扭曲,我建议您检查一下。它演示了如何使用代理类轻松地发出请求。

答案 5 :(得分:1)

据我所知,urllib和urllib2仅支持GETPOST个请求。您应该查看httplibhttplib2

答案 6 :(得分:0)

urllib库中的默认HTTP方法是POST和GET:

def get_method(self):
    """Return a string indicating the HTTP request method."""
    default_method = "POST" if self.data is not None else "GET"
    return getattr(self, 'method', default_method)

但是我们可以覆盖这个get_method()函数来获取DELETE请求:

req = urllib.request.Request(new_url)
req.get_method = lambda: "DELETE"
相关问题