跳到主内容
UniKit

curl 转代码

把 curl 命令解析成结构化请求,并生成 fetch、axios、Python requests、Go net/http、PHP cURL、Java HttpClient、C# HttpClient 代码,无法识别的选项会单独列出警告。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

目标语言

解析结果

请求方法POST
请求地址https://api.example.com/users
请求体类型JSON
请求头2

生成的代码

const response = await fetch("https://api.example.com/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json",
  },
  body: "{\"name\":\"Ada\",\"role\":\"admin\"}",
});

const data = await response.json();
console.log(data);

这个工具能做什么

  • 从浏览器开发者工具里复制一条 curl(Copy as cURL),一键换成 fetch、axios、Python requests、Go、PHP、Java 或 C# 的可运行代码。
  • 对接第三方 API 时先拿 curl 验证请求能通,再转成项目里使用的语言,避免手抄请求头和请求体出错。
  • 学习不同 HTTP 客户端的写法:同一请求七种语言的对照,比翻文档更直观。
  • 排查「代码发出的请求和 curl 结果不一样」:先看解析出的请求方法、地址、请求体类型和请求头数量是否与预期一致。

示例

输入

curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"name":"Ada","role":"admin"}'

输出

const response = await fetch("https://api.example.com/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json",
  },
  body: "{\"name\":\"Ada\",\"role\":\"admin\"}",
});

const data = await response.json();
console.log(data);

请求体被识别为 JSON,所以最后用 response.json() 解析;-H 里没有 Content-Type 时会按原始文本处理,改用 response.text()。

常见问题

哪些 curl 选项能识别?

支持 -X/--request、-H/--header、-d/--data 系列、-F/--form、-u/--user(Basic 认证)、-b/--cookie、-G/--get、-L 与 -k。不认识的选项不会静默丢掉,会单独列在「无法解析的选项」里,方便你确认影响。

生成代码里的密钥怎么办?

工具会把 -H 里的 Authorization 等请求头原样写进代码,方便你直接跑通,但这也意味着密钥会出现在代码和复制记录里。粘贴真实凭据前请确认环境可信,转出的代码提交前记得替换成环境变量。

-k 和 --compressed 转过去了吗?

没有等价选项。工具会明确提示:-k(跳过证书校验)在标准 HTTP 客户端里通常要额外配置,--compressed 多数客户端默认就会协商压缩,所以生成的代码里不会出现,需要时手动补上。

为什么生成的代码里 URL 和请求体多了一层反斜杠?

那是字符串转义,不是内容变了。原始 JSON 里的双引号在 JS 字符串中必须写成 \",粘贴到编辑器里执行时就是原始的 {"name":"Ada"}。用单引号包裹的 shell 命令不会引入额外的转义。

命令会上传到服务器吗?

不会。curl 的切词、解析和代码生成全是本地字符串处理,页面不发任何网络请求,断网也能用。

关键词:curlcurl 转代码fetchaxiosrequestsnet/httpphp curlhttpclient命令转换code generator

同类工具