Python请求中`data`和`files`之间的区别

tsc*_*zle 7 python http request python-requests

我目前的理解是,data并且files都将数据放入POST(requests.post())的主体,但它们之间有什么区别?何时应该使用另一个,或两者兼而有之?最后,HTTP API是否可以要求事物在一个或另一个中,或者它可能无关紧要,因为它们在接收端无法区分?

djv*_*jvg 4

让我分享我所发现的内容,尽管如果真正知道他/她在说什么的人能够详细说明这一点(或纠正我),我将不胜感激。

以下是requests api 文档对 request() 方法的这些参数的说明:

data -- (可选)字典或元​​组列表 [(key, value)] (将进行表单编码)、字节或类似文件的对象以在请求正文中发送。

files --(可选)“name”字典:file-like-objects(或 {'name':file-tuple})用于分段编码上传。file-tuple 可以是 2 元组 ('filename', fileobj)、3 元组 ('filename', fileobj, 'content_type') 或 4 元组 ('filename', fileobj, 'content_type', custom_headers),其中“content-type”是定义给定文件内容类型的字符串,custom_headers是一个类似字典的对象,其中包含要为文件添加的其他标头。

我猜想将在http请求中data编码为内容类型,而将编码为. 如果您同时传递数据和文件,后者也成立。这也可以通过查看结果和来看出。有关这些内容类型及其预期用途的更多信息,您可以参考W3C 建议等。application/x-www-form-urlencodedfilesmultipart/form-datarequest.headersrequest.body

requests 快速入门指南中给出了一些示例。这些可能也很好地表明了预期用途。