读取文档的requests库时,基本请求函数的API有几个似乎多余的参数:
数据-(可选)字典或元组列表(键,值)、字节或类似文件的对象发送到请求正文中。 json -(可选) json数据发送到请求的正文中。 文件-(可选)“名称”字典:文件类对象(或{'name':file-tuple})用于多部分编码上载。文件-tuple可以是一个2元组('filename',fileobj),3-tuple ('filename',fileobj,'content_type'),也可以是4个元组('filename',fileobj,' content _ type ',custom_headers),其中‘content_type’是定义给定文件的内容类型的字符串,custom_headers是一个类似dict的对象,包含要为文件添加的附加标题。
界面的其他部分也是如此,例如post、get等,我觉得这有点让人困惑。
假设我试图将文件发送到某个端点,并说明如何使用它们。我/会不会有任何理由不把所有东西塞进数据参数,而不是使用文件、json等?
换言之,在以下几个方面之间是否有任何区别:
requests.post('http://some.api.endpoint',
data={'command': 'foo',
'options': {'the_thing':'gimmie', 'the_answer': 42},
'the_file': open('myfile.pdf', 'rb')})对比
requests.post('http://some.api.endpoint',
data={'command': 'foo'},
json=json.dumps({'options': {'the_thing':'gimmie', 'the_answer': 42}}),
files={'the_file': open('myfile.pdf', 'rb')})最自然地阅读引用的部分文档是,这两个调用是等价的.?
也许我误读了数据参数的文档,它不能使用一本文件字典?对我来说有点不清楚。对data的文档解释是指“字典或列表[三元组、字节或类文件对象],还是指”字典或元组列表、字节列表或类似文件的对象?这两种方法在语法上都有点不舒服。
发布于 2017-03-09 19:30:52
使用files参数状态“用于多部分编码上载”。当使用data参数时,多部分http响应不是默认的,因此两者并不等价。具体而言,请参见什么是http多部分请求?,使用files参数生成一个multipart/form-data POST,而不是application/x-www-form-urlencoded。
https://stackoverflow.com/questions/42703325
复制相似问题