把浏览器里的请求变成可复用代码
排查接口时,浏览器开发者工具中的“复制为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 / -e | Cookie、User-Agent和Referer,Fetch有浏览器限制 |
--compressed / -s / -S / -v / -i | 按目标库解压;终端输出样式不会复刻 |
转换时常见的问题
粘贴命令会发送请求吗?
不会。只在浏览器内解析文本和生成代码,不访问目标网址、不验证密码,也不执行代码。
支持从开发者工具复制的cURL吗?
支持使用POSIX引号的单条请求和已支持的选项。选择bash风格导出;如果提示不支持的参数,应先核对,而不是为了消除提示直接删除。
JSON中的大数字会丢精度吗?
转换时保留字面JSON正文,不解析成JavaScript数值,因此不会在这一转换步骤中改写数字、空白或重复键。--json也不会验证JSON语法。
为什么请求头数量和Fetch代码不一致?
摘要显示解析到的请求头。Fetch中无法手动设置的字段会省略并逐项说明;Content-Length交由目标HTTP库重算。
能直接用于生产吗?
请先核对运行说明并在目标环境测试。代码中可能含有输入的令牌或密码;发布到仓库前应检查。需要的超时、错误处理和环境设置应按项目补齐。
