跳到主要内容

cURL 转代码工具

把 cURL 命令转换成 PHP、Python、JavaScript 代码,自动拆出请求头、请求体、认证与表单字段。

<?php

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.example.com/v1/orders',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer sk-demo-token',
    ],
    CURLOPT_POSTFIELDS => '{"product_id":1024,"quantity":2}'
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status, "\n", $response, "\n";
POSThttps://api.example.com/v1/orders· 2 个请求头

支持 -X、-H、-d、--json、-F、-u、-b、-L、-k、--url 等常用参数,以及 -XPOST、--header=值、合并短选项这些写法。

生成的代码是给人改的样板:超时、重试、错误处理都按各自语言的常见写法补了一份最简单的,接入项目时按需替换。

-d @文件 这类从磁盘读内容的写法无法还原,会在这里提示出来。

这个工具是什么

cURL 转代码工具把一段 cURL 命令翻译成可读的目标语言代码。常见来源是浏览器开发者工具里的「Copy as cURL」:在 Network 面板右键某个请求复制出来,贴到这里,就能得到等价的 PHP、Python 或 JavaScript 写法,省去手工逐个搬请求头和请求体。

支持 PHP 原生 cURL、PHP Guzzle、Python requests、JavaScript fetch 四种目标。

什么时候用它

  1. 从浏览器里复制一个带登录态、带复杂请求头的请求,快速拿到可执行的代码骨架。
  2. 联调接口时先拿到一个能跑的最小示例,确认参数与鉴权方式,再往项目里搬。
  3. 把后端同事给的 cURL 示例转成自己常用的语言,避免逐个参数对照。
  4. 检查某个请求到底带了哪些头,比如是不是重复设置了 Content-Type。
  5. 把 Python 写的调试脚本改成 PHP 版本。

有什么限制

  • -d @文件名、--json @文件名 这类从磁盘读内容的写法无法还原,会在页面上提示出来。
  • 生成的代码是样板:超时、重试、异常处理都按各语言最常见的写法补了一份最简单的实现,接入项目时需要按规范替换。
  • 只识别命令行参数,不解析 shell 变量、管道与 $(...) 命令替换的结果。
  • Cookie 按字面拼接进请求头,不会从浏览器或 cookie 文件里读取真实值。
  • 浏览器 fetch 不支持跳过证书校验,用了 -k 的命令会额外给出一段说明而不是直接生成无效代码。

常见问题

Q:为什么生成的 Authorization 头是字面量? A:工具只做静态转换,不会去猜你的令牌从哪来。把那段字符串替换成读配置或环境变量的写法即可。

Q:多个 -d 参数怎么处理? A:按 curl 的行为用 & 拼成一个请求体,这与实际发出的请求一致。

Q:Guzzle 版本里为什么把 URL 拆成了 base_uri 和路径? A:这是 Guzzle 更常见的组织方式,便于复用同一个客户端实例。如果你更希望保留完整 URL,把两行合并即可。

Q:支持 multipart 上传吗? A:支持。-F 'file=@/path' 会生成 PHP 的 CURLFile、Python 的 files 或 JavaScript 的 FormData 写法。

相关工具

同类或常用搭配,接着往下做