将 Paypal cURL 命令转换为 Axios 请求

Posted

技术标签:

【中文标题】将 Paypal cURL 命令转换为 Axios 请求【英文标题】:Convert Paypal cURL command to Axios request 【发布时间】:2021-04-28 17:14:35 【问题描述】:

按照 Paypal cURL 命令可以正常工作,但不幸的是我无法转换为 axios 代码以使其正常工作。 Paypal Documentation 没有表单数据示例,但如果您需要可选的 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);
  );

我看不出问题出在哪里。请赐教。提前致谢。

【问题讨论】:

【参考方案1】:

我没想到,但它通过缺少边界信息来解决。这些可以使用:

 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()
    
  )

【讨论】:

以上是关于将 Paypal cURL 命令转换为 Axios 请求的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 PayPal 的 api 并需要帮助将 Curl 转换为 PHP

如何将此 cURL 代码转换为 PHP(PayPal API)

如何将 *any* cURL 或 node-fetch 请求转换为 Axios 请求?

Axios Paypal 令牌问题

将命令 curl 转换为 javascript

将 cURL 命令转换为 python 请求