プロジェクトの 1 つを、request
もう少し軽量なもの (got、axios、または fetch など) に切り替えています。すべて順調に進んでいますが、ファイル ストリーム (PUT
およびPOST
) をアップロードしようとすると問題が発生します。request パッケージでは問題なく動作しますが、他の 3 つのパッケージはいずれもサーバーから 500 を返します。
500 は通常、サーバー側の問題を意味することを知っていますが、これは私がテストしている HTTP パッケージとのみ一致します。コードを use に戻すと、request
正常に動作します。
ここに私の現在のリクエストコードがあります:
Request.put(`http://endpoint.com`, {
headers: {
Authorization: `Bearer ${account.token.access_token}`
},
formData: {
content: fs.createReadStream(localPath)
}
}, (err, response, body) => {
if (err) {
return callback(err);
}
return callback(null, body);
});
そして、これは別のパッケージを使用した試みの1つです(この場合は取得しました):
got.put(`http://endpoint.com`, {
headers: {
'Content-Type': 'multipart/form-data',
Authorization: `Bearer ${account.token.access_token}`,
},
body: {
content: fs.createReadStream(localPath)
}
})
.then(response => {
return callback(null, response.body);
})
.catch(err => {
return callback(err);
});
入手したドキュメントform-data
に従って、その例に従ってパッケージを組み合わせて使用しようとしましたが、それでも同じ問題が発生します。
私が収集できるこれら2つの唯一の違いは、ヘッダーgot
を手動で指定する必要があることです。そうしないと、エンドポイントで適切なエラーが発生します。Content-Type
それ以外の場合、2 つのパッケージがストリームを使用して本体を構築する方法がわかりませんが、前述したようfetch
にaxios
、got
.
を使用したスニペットが必要な場合は、fetch
喜んaxios
で投稿します。