将Paypal cURL命令转换为Axios请求



以下Paypal cURL命令工作,因为它应该是,但不幸的是,我无法转换到axios代码工作相同。Paypal文档没有表单数据示例但它允许,如果你需要可选的message_document文件。

curl --request POST 
--url https://api-m.sandbox.paypal.com/v1/customer/disputes/12345/send-message` 
--header 'authorization: Bearer --token--' 
--header 'content-type: multipart/form-data' 
-F "input={"message":"sample message"};type=application/json" 
-F "message_document=@sample.pdf"

我尝试了Node.js代码,即使没有发送文件,但不成功:

const FormData = require('form-data');
const form = new FormData();
form.append('input', JSON.stringify({ message: 'sample message' }), { contentType: 'application/json' });
const result = await axios({
url: 'https://api-m.sandbox.paypal.com/v1/customer/disputes/12345/send-message',
method: 'post',
data: form,
headers: {
'Content-Type': 'multipart/form-data',
Authorization: 'Bearer --token--'
}
}).catch(err => {
throw new Error(err);
});
我看不出问题在哪里。请开导我。提前谢谢。

我没有预料到,但它是用缺失的边界信息解决的。这些可以使用:

const result = await axios({
url: 'https://api-m.sandbox.paypal.com/v1/customer/disputes/12345/send-message',
method: 'post',
data: form,
headers: {
'Content-Type': `multipart/form-data; boundary=${form._boundary}`,
Authorization: 'Bearer --token--'
}
})

const result = await axios({
url: 'https://api-m.sandbox.paypal.com/v1/customer/disputes/12345/send-message',
method: 'post',
data: form,
headers: {
Authorization: 'Bearer --token--',
...form.getHeaders()
}
})

最新更新