首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将*任意* cURL或节点获取请求转换为Axios请求?

如何将*任意* cURL或节点获取请求转换为Axios请求?
EN

Stack Overflow用户
提问于 2021-02-19 16:17:04
回答 3查看 4K关注 0票数 4

我希望能够从Chrome工具中的“网络”选项卡复制任何HTTP请求,并将其从node.js代码中重新发送为Axios请求。(尝试过节点提取,但在几种重要的方法中发现Axios更好)。但是,Chrome只有以下选项用于复制请求:复制为Powershell,复制为fetch,复制为node.js fetch,复制为cURL (cmd),复制为cURL (bash)。它不包括Axios选项。

有几个在线工具可以转换cURL请求:

  • https://curl.trillworks.com/ <==从cURL转换为Ansible、Browser (提取)、Dart、Elixir、Go、JSON、Node.js (提取)、Node.js (请求)、MATLAB、PHP、Python、R、Rust或Strest
  • https://onlinedevtools.in/curl <==使用上述选项的子集从cURL进行转换: Go、JSON、Node.js、PHP、Python、Rust或Strest

但不幸的是,这两家公司都没有对Axios的选择。我也没能找到一个npm包来完成转换。它需要可重复,所以不确定什么是最好的选择,但它不能只是一个手动转换-感谢任何建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-01 03:50:07

您可以使用邮递员,也可以将cURL转换成几种语言。

  1. 导入cURL命令
  1. 打开请求的代码面板
  1. 在这里,您可以选择要转换的任何语言。
票数 10
EN

Stack Overflow用户

发布于 2021-02-23 06:20:07

正如你所说:

需要找到一种方法来做到这一点,无论是一个npm包,Chrome扩展,在线工具,甚至手工编制的node.js代码

我使用卷曲转换器 (甚至是一个链接后面的一个包作为例子)编写了一个代码,可以帮助您。

它首先使用toJsonString方法将cURL字符串转换为JSON,之后,大量的“解析”生成了一个漂亮而有用的Axios选项数组。“分析”是从cURL翻译过来的:

  • URL
  • 方法
  • 标头
  • 曲奇饼
  • 数据(application/x-www-form-urlencodedmultipart/form-dataapplication/json)。

如果您需要其他的东西,您可以使用代码作为基础,并根据您的需要对其进行更改。

代码语言:javascript
运行
复制
const curlconverter = require('curlconverter');

function curlToAxios(curl){
  let parsedCurl = curlconverter.toJsonString(curl);
  parsedCurl = JSON.parse(parsedCurl)
  // For some reason, sometimes the URL returns with quotation marks at the beginning and the end
  const qm = ['%27', '\''];
  qm.forEach(element => {
    if (parsedCurl.raw_url.startsWith(element)) {
      // Removing last occurrence
      var pos = parsedCurl.raw_url.lastIndexOf(element);
      parsedCurl.raw_url = parsedCurl.raw_url.substring(0,pos) + parsedCurl.raw_url.substring(pos+element.length);
      // Removing first occurrence
      parsedCurl.raw_url = parsedCurl.raw_url.replace(element, '');
    }
  });
  let axiosObject;
  let axiosOptions = {
    url: parsedCurl.raw_url,
    method: parsedCurl.method,
  };
  if (parsedCurl.headers && Object.keys(parsedCurl.headers).length > 0) {
    axiosOptions.headers = parsedCurl.headers;
  }
  if (parsedCurl.cookies && Object.keys(parsedCurl.cookies).length > 0) {
    // Convert cookies to 'cookie1=a; cookie2=b;' format
    let cookies = '';
    Object.keys(parsedCurl.cookies).forEach(element => {
      cookies += encodeURI(element) + '=' + (parsedCurl.cookies[element] ? encodeURI(parsedCurl.cookies[element]) : '') + '; ';
    });
    if (!axiosOptions.headers) {
      axiosOptions.headers = {}
    }
    axiosOptions.headers.Cookie = cookies
  }
  if (parsedCurl.data && Object.keys(parsedCurl.data).length > 0) {
    let data;
    // Form data
    if(parsedCurl.headers && (parsedCurl.headers['Content-Type'].includes('application/x-www-form-urlencoded') || parsedCurl.headers['Content-Type'].includes('multipart/form-data')) ) {
      data = '';
      Object.keys(parsedCurl.data).forEach(element => {
        data += (data !== '' ? '&' : '') + encodeURI(element) + '=' + (parsedCurl.data[element] ? encodeURI(parsedCurl.data[element]) : '');
      });
    } else if(parsedCurl.headers && parsedCurl.headers['Content-Type'] === 'application/json') {
      // The data here is on first element key
      data = Object.keys(parsedCurl.data)[0]
      data = JSON.parse(data);
    }
    axiosOptions.data = data;
  }
  axiosObject = axios(axiosOptions);

  return axiosObject;
}

当它返回一个Axios时,您可以正常使用它:

代码语言:javascript
运行
复制
let curl = "curl --request POST \
--url http://localhost:3000/api/v1/users/new \
--header 'Content-Type: application/json' \
--data '{\"email\": \"email@example.com\",\"password\": \"123456\"}'"

let result = curlToAxios(curl)

result
.then(function (response) {
  console.log(response);
})
.catch(function (error) {
  console.log(error);
})
票数 1
EN

Stack Overflow用户

发布于 2022-09-07 06:43:33

https://curlconverter.com/node-axios/现在支持将curl转换为Axios。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66281188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档