2014-07-03 61 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中給出了一些示例。這些也可以很好地說明預期用途。