从接口调试到项目代码

cURL代码转换器

把调试好的接口请求接进项目。粘贴curl命令,生成Python、JavaScript或PHP代码,同时核对请求头、正文和浏览器限制。

curl请求代码
浏览器本地转换
01

粘贴一条HTTP请求,保留请求头和正文的引号;支持POSIX语法及反斜杠续行。

POSTexample.com3个请求头
02
async function main() {
  const response = await fetch("https://example.com/api/messages", {
    method: "POST",
    headers: [
      ["Authorization", "Bearer YOUR_TOKEN"],
      ["Content-Type", "application/json"],
      ["Accept", "application/json"]
    ],
    body: "{\"message\":\"Hello from curl\",\"enabled\":true}",
    redirect: "manual",
    credentials: "omit"
  });
  console.log(response.status);
  console.log(await response.text());
}

main().catch(console.error);

浏览器Fetch或Node.js 18+

运行前核对

  • 转换器不会发送请求。生成代码含有输入的URL、请求头和认证信息,分享前请核对。
  • 浏览器Fetch受CORS限制,credentials: omit不自动发送Cookie;需要凭据时请主动配置。手动重定向可能得到不透明响应。

无需注册,不执行命令;输入内容留在当前浏览器。

把浏览器里的请求变成可复用代码

排查接口时,浏览器开发者工具中的“复制为cURL”能留下URL、请求头和正文。接入项目时,还要把这些信息整理成对应语言的调用方式。这个curl转换器生成的是可检查的请求代码,适合复现接口问题、编写脚本或整理API文档中的示例。

从curl命令生成代码,先检查这几项

一次粘贴一条以curl开头的HTTP或HTTPS命令。选择目标语言后,核对URL、方法和正文,再阅读转换说明。代码可以复制或下载;只有自行运行代码时,才会实际发送请求。

带空格的值需要保留引号,多行命令应保留行尾反斜杠。PowerShell、CMD和ANSI-C的美元符号引号不在支持范围内;Shell变量和命令替换需先换成实际值。

Python、JavaScript和PHP怎么选?

Python输出使用requests.request,适合脚本和后端调用;先安装Requests。内联正文按UTF-8字节发送,不会为了生成代码而重新序列化JSON。JavaScript输出使用Fetch,适合接入前端或支持Fetch的Node.js环境。

PHP输出使用cURL扩展。三种目标语言使用同一份解析结果,但运行库默认值不同;超时、代理和应用级错误处理需要根据项目补充。文件上传、multipart表单、文件正文和高级选项暂不支持自动转换。

curl能请求成功,Fetch为什么报错?

浏览器会执行CORS规则,还会管理Cookie、Origin等请求头。Fetch输出会明确列出省略的浏览器控制请求头;需要这些字段时可切换Python或PHP。默认使用credentials: omit,不会自动带上浏览器Cookie,也不会复制登录会话。

未指定-L时,Fetch使用手动重定向,浏览器可能返回不透明响应。指定-L后,跳转时的方法改写及认证信息转发由目标库决定。转换完成不等于接口、认证和跨域配置已经验证。

示例:保留重复的表单字段

下面的两个tag都会保留。--data-urlencode先编码空格,再以字符串正文交给Requests,避免用字典时覆盖同名字段。

curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'
import requests

url = "https://example.com/api/tags"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    data=body,
    allow_redirects=False,
    verify=True,
)
print(response.status_code)
print(response.text)

curl参数与请求代码对照

curl输入转换含义
URL / --url一条完整的HTTP或HTTPS地址
-X / --request显式请求方法
-H / --header请求头名称和值,重复或空值指令需人工核对
-d / --data / --data-raw / --data-binary内联正文;多次数据参数保留顺序
--data-urlencode / -G编码值;-G将数据移到查询字符串
--json保留JSON文本并添加默认JSON请求头
-u / --user显式username:password形式的Basic Auth
-L / -I / -k分别控制重定向、HEAD和TLS校验;Fetch不支持-k
-b / -A / -eCookie、User-Agent和Referer,Fetch有浏览器限制
--compressed / -s / -S / -v / -i按目标库解压;终端输出样式不会复刻

转换时常见的问题

粘贴命令会发送请求吗?

不会。只在浏览器内解析文本和生成代码,不访问目标网址、不验证密码,也不执行代码。

支持从开发者工具复制的cURL吗?

支持使用POSIX引号的单条请求和已支持的选项。选择bash风格导出;如果提示不支持的参数,应先核对,而不是为了消除提示直接删除。

JSON中的大数字会丢精度吗?

转换时保留字面JSON正文,不解析成JavaScript数值,因此不会在这一转换步骤中改写数字、空白或重复键。--json也不会验证JSON语法。

为什么请求头数量和Fetch代码不一致?

摘要显示解析到的请求头。Fetch中无法手动设置的字段会省略并逐项说明;Content-Length交由目标HTTP库重算。

能直接用于生产吗?

请先核对运行说明并在目标环境测试。代码中可能含有输入的令牌或密码;发布到仓库前应检查。需要的超时、错误处理和环境设置应按项目补齐。

技术文档: curl · Requests · Fetch