使用方法
- 把一条 curl 命令粘贴到“curl 命令”中。包含空格的值两侧的引号须保留。
- 阅读“转换过程”,逐项核对请求方法、查询字符串、请求体和请求头。
- 把“Python 代码”复制到已安装 requests 库的脚本中,或把“JavaScript fetch 代码”复制到页面中。
- 若出现注释或错误,请先改正命令,然后重新复制代码。
本工具读取哪些 curl 选项
本工具读取大多数请求所用的选项。每个选项都以已知的方式改变 Python 调用;任何其他选项都会使转换停止并给出提示,因此不会做任何猜测。
- -X 与 --request 设置请求方法,按写出的方法使用。说明文档称它只改变发送的单词。
- -H 与 --header 添加请求头。形如 X-Flag; 的行会发送空值;冒号后为空的 -H 则会删除某个请求头。
- -d、--data、--data-raw 和 --data-binary 设置请求体。多个 -d 的值用 & 连接。配合 -G 时,它们改为查询字符串。
- -G 与 --get、-I 与 --head、-L 与 --location 会改变请求方法或重定向处理。
- -u 与 --user、-A 与 --user-agent、-b 与 --cookie 分别设置认证元组、User-Agent 请求头和 Cookie 请求头。
- --json 把该值作为请求体发送,并设置 JSON 请求头;-H 可以覆盖这些请求头。
命令如何被读取
文本按 POSIX shell 的方式拆分为词。单引号保留每个字符。在双引号内,反斜杠只转义 $、反引号、双引号、反斜杠和换行。行末的反斜杠把该行与下一行连接。像 $HOME 这样的 shell 展开不会被执行,因此这类值会被报告为错误。
本工具不检查的内容
- 它不发送请求,因此无法告诉您服务器是否接受该请求。
- 浏览器会对 fetch 应用跨源规则。发往另一网站的请求可能在那里被拦截,即使同一命令在终端中可以运行。本工具不测试这一点。
- 它不打开以 @ 命名的文件,也不读取 Cookie 文件。
- 它只输出 Python。代码使用 requests 库,需要另行安装。
计算示例:带 JSON 请求体的 PUT
该命令向某个条目发送带 JSON 请求体的 PUT。请求方法来自 -X,请求头来自 -H,请求体来自 -d。Python 调用具有同样的三个部分,转换过程列表会说明哪个选项给出了哪个值。
| curl 选项 | Python 参数 | 代码中的值 |
|---|---|---|
| -X PUT | method | 'PUT' |
| -H 'Content-Type: application/json' | headers | 'Content-Type': 'application/json' |
| -d '{"name": "Ada"}' | data | '{"name": "Ada"}' |
常见问题
为什么代码使用 requests 而不是其他库?
requests 是本工具转换到的 Python 库,其 request 函数可在一次调用中接收请求方法、URL、请求头、数据和认证信息。同一调用适用于命令中给出的每种方法。
我没有写 -X,为什么请求却以 POST 发送?
curl 说明文档称 -d 使用 POST,而 --json 同样发送 POST。若要改变发送的方法,请写出所需的 -X,例如 -X PUT。
-G 在转换中起什么作用?
按说明文档,它把 -d 的数据移入 URL 作为查询字符串,并使请求成为 GET。于是 Python 调用含有完整的 URL,而没有请求体。
命令中的密码会被发送到别处吗?
不会。命令在您的浏览器中读取,既不会保存,也不会发送给我们。不过,请在您无法控制的页面上只使用测试用的密码或令牌。
输出为什么提到重定向?
curl 只有使用 -L 时才跟随重定向。requests 对所有方法默认跟随,fetch 也是如此,因此提示说明了如何与没有 -L 的 curl 调用保持一致。
工具能读取以 @ 命名的文件中的数据吗?
不能。本工具不打开文件,因此 @ 值会被报告为错误。请把数据本身粘贴到命令中,再进行转换。
资料来源
- curl 说明文档:-X、-H、-d、-G、-I、-u、-A、-b、-L、--json 与 --basic(英文)
- POSIX Shell 命令语言,第2.2节 引用(英文)
- Requests:request、get、post 与 head 的 API 参考(英文)
数据和文字最近核对于2026年11月10日星期二。