2014-07-03 58 views
3

我现在的理解是,datafiles都将数据放入一个POST(requests.post())的身体,但它们之间有什么区别呢?什么时候应该在另一个或两个上使用?最后,HTTP API是否可以要求事物处于一种或另一种状态,或者它可能无关紧要,因为它们在接收端或其他方面难以区分?差异请求

回答

0

让我分享我发现的东西,尽管如果有人真正知道他/她在说什么可以详细说明这个问题(或改正我),我将非常感激。

下面介绍一下requests api docs不得不说关于请求的这些参数()方法:

数据 - (可选)字典或元​​组列表[(键,值)](将 是形式编码),字节或类似文件的对象在请求的主体中发送。

文件 - '名称' 的(可选)词典:类文件的对象(或 { '名称':文件元组}),用于多编码上传。文件元组可以是 2元组('filename',fileobj),3元组('filename',fileobj, 'content_type')或4元组('filename',fileobj,'content_type', custom_headers),其中'content-type'是一个字符串,用于定义给定文件的内容 类型和custom_headers类似于dict的对象 包含为文件添加的其他头文件。

我想data将被编码为在HTTP请求的内容类型application/x-www-form-urlencoded,而files将被编码为multipart/form-data。如果您同时传递数据和文件,则后者也成立。这也可以通过查看产生的request.headersrequest.body来看到。有关这些内容类型及其预期用途的更多信息,请参阅W3C recommendations

requests QuickStart guide中给出了一些示例。这些也可以很好地说明预期用途。