Skip to content

cURL 命令生成器与构建工具

在浏览器中构建 curl 命令——设置请求方法、请求头、认证与请求体,即刻获得可复制的命令。支持 Bearer、POST JSON、文件上传预设。免费、隐私安全、无需注册。

无追踪 浏览器中运行 免费
命令完全在您的浏览器中构建。令牌、URL 和载荷从不离开您的设备。
预设
查询参数
请求头
认证
请求体
选项
生成的命令
已针对各方法、认证和请求体类型的正确 curl 命令生成、每种请求体类型的准确请求头附加,以及 Shell 安全的引号和转义进行审查 — Go Tools 工程团队 · 2026年6月3日

什么是 curl 命令?

curl 是一个用于通过 HTTP 及数十种其他协议传输数据的命令行工具。一条 curl 命令由二进制名称、一组标志和一个 URL 组成——例如 `curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'`。由于 curl 几乎在所有 Linux、macOS 和现代 Windows 机器上都预装,它是测试 API、从文档重现请求或在 CI 脚本中对服务进行健康检查的通用方式。curl 的简洁让它功能强大,但也让命令难以记忆,这正是可视化构建器的用武之地。

每条 curl 命令的结构相同。方法(`-X GET`、`-X POST` 等)设置 HTTP 动词,默认为 GET。URL 是端点,查询参数追加在 `?` 之后。请求头(`-H 'Key: Value'`,可重复)携带 `Accept`、`Content-Type` 等元数据。认证只是特殊的请求头——令牌使用 `-H 'Authorization: Bearer …'`,Basic 认证使用 `-u user:pass`,自定义密钥使用 `-H 'X-API-Key: …'`。请求体(原始数据或表单数据用 `-d`,multipart 和文件上传用 `-F`)携带载荷。最后,选项标志如 `-L`(跟随重定向)、`-i`(包含响应头)和 `-v`(详细模式)控制行为。此工具将每个部分以表单字段的形式呈现,并实时重建命令。

当您面临引号处理困难、在 JSON POST 时忘记 `Content-Type` 请求头,或手动组装 multipart 上传时,请使用 curl 命令生成器。构建器会正确处理 Shell 安全的单引号转义、编码查询字符串,并为每种请求体类型附加正确的请求头——然后您得到一条可以信赖的命令。如需包含 40 多个可运行示例的详尽标志参考,请阅读配套的 curl 速查表;要编码复杂的查询字符串值,可使用我们的 URL 编码器

一切在您的浏览器中完成。您的令牌、凭据、URL 和请求体通过客户端 JavaScript 组装,从不发送到任何地方——因此您可以针对真实的生产端点和真实的 API 密钥构建命令,数据不会离开您的设备。

# Plain GET — curl defaults to GET
curl https://api.example.com/users

# GET with a Bearer token (auth is just a header)
curl https://api.example.com/me \
  -H 'Authorization: Bearer YOUR_TOKEN'

# POST a JSON body — note the Content-Type header
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada","role":"admin"}'

# Multipart file upload — '@' reads the file from disk
curl -X POST https://api.example.com/upload \
  -F 'file=@report.pdf' \
  -F 'title=Q3 report'

核心功能

可视化请求构建器

以表单字段形式展示整个请求——方法、URL、查询参数、请求头、认证、请求体和选项——而无需记忆标志顺序和引号规则。再也不用猜测 URL 应该在 `-d` 之前还是之后。

实时命令,支持复制与导出

每次按键都会在页面底部实时重建 curl 命令。一键复制到剪贴板,或导出为 .sh 文件下载可运行的 Shell 脚本,可直接放入代码库或 CI 任务。

完整的认证支持

支持 Bearer 令牌、Basic 认证(`-u user:pass`)和自定义 API 密钥请求头,均以服务器期望的精确格式生成。选择认证方案,粘贴凭据,即可生成正确的 `Authorization` 或自定义请求头。

支持所有请求体类型

支持原始 JSON(自动添加对应的 `Content-Type` 请求头)、`application/x-www-form-urlencoded` 表单字段,以及 `multipart/form-data` 上传(任意字段均可通过 `@` 前缀切换为文件)。

六个一键预设

GET with Bearer、POST JSON、表单上传、Basic 认证、下载 `-o` 和详细调试,一键填充整个表单。从最常见 API 任务的可用请求出发,按需调整。

多行与单行输出切换

在紧凑的单行命令(便于快速粘贴)与反斜杠续行的多行版本(便于在脚本中阅读或在 Pull Request 中审查)之间切换。同一命令,两种形式。

100% 基于浏览器的隐私保护

令牌、URL、请求头和请求体完全在客户端组装,从不离开您的设备——可在"网络"标签页中验证。对生产端点和真实凭据安全,零数据泄露。

专为开发工具工作流设计

围绕测试 API 和从浏览器开发工具"Copy as cURL"重现请求的日常循环而设计。下一版本将推出"转换"标签页,可将粘贴的 curl 命令解析为 fetch、requests、Go、PHP、Ruby 和 Node.js。

curl 替代工具与 HTTP 客户端

HTTPie

命令行工具,人性化语法

具有彩色输出和更简洁语法的现代 CLI(`http POST api.example.com/users name=Ada`)。默认设置 JSON `Content-Type`。对于交互式使用更友好;curl 在普及度和脚本可移植性上更胜一筹。

wget

命令行工具,专注下载

最适合递归下载和镜像站点;默认跟随重定向和重试。在任意方法、自定义请求头和 API 测试方面弱于 curl。在 Linux 上通常与 curl 一起预装。

Postman

图形界面应用

一个完整的图形界面工具,可构建、保存和共享请求,支持集合、环境和团队同步。非常适合探索性 API 工作;可导入/导出 curl。对于快速检查或 CI 而言比单行命令更重。

Insomnia

图形界面应用

Postman 的轻量级开源替代品,拥有简洁的请求构建器和 curl 导入/导出功能。适合组织 API 请求;与 Postman 一样,对于单个脚本化调用来说功能过多。

fetch() / requests

代码内置 HTTP 客户端

JavaScript 的 `fetch()` 和 Python 的 `requests` 是在应用代码中发起请求的方式。先以 curl 构建并验证请求,然后进行转换——即将推出的"转换"标签页将生成等效的 fetch、requests 和其他客户端代码。

curl 命令示例

基本 GET 请求

curl https://api.example.com/users

不指定方法标志时,curl 默认使用 GET。这是最简单的请求——获取资源并将响应体打印到终端。在构建器中添加查询参数,它们会自动进行 URL 编码并追加到末尾(如 `?page=2&limit=50`)。

携带 Bearer 令牌的 GET

curl https://api.example.com/me \
  -H 'Authorization: Bearer YOUR_TOKEN'

针对 REST API 最常见的认证调用。Bearer 认证预设会自动为您添加 `Authorization: Bearer …` 请求头。在发送令牌前,可将其粘贴到我们的 JWT 解码器中查看内部声明。

POST JSON 请求体

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

curl POST 请求生成器的标准用法:JSON 请求体类型设置 `-X POST`,附加 `Content-Type: application/json` 请求头,并通过 `-d` 传递载荷。可使用我们的 JSON 格式化工具对乱序的 API 响应进行美化。

POST 表单(urlencoded)

curl -X POST https://api.example.com/login \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'username=ada&password=s3cret'

经典的 HTML 表单提交。每个 `-d field=value` 键值对以 `&` 连接,以 `application/x-www-form-urlencoded` 格式发送。curl 会对保留字符进行 URL 编码;在表单请求体区域构建各字段,工具会自动组装字符串。

Multipart 文件上传

curl -X POST https://api.example.com/upload \
  -F 'file=@report.pdf' \
  -F 'title=Q3 report'

curl 文件上传命令使用 `-F` 标志处理 `multipart/form-data`。在值前加 `@` 前缀可从磁盘附加文件;可在同一请求中自由混合文件字段和文本字段。curl 会自动设置 multipart 边界和 `Content-Type`——切勿手动设置。

下载到文件

curl -L -o archive.zip \
  https://example.com/files/archive.zip

使用 `-o` 将响应体保存到指定文件,`-L` 跟随重定向到真实的下载 URL(CDN 和发布资源链接常见此情况)。可用 `-O` 代替 `-o` 以保留服务器的文件名。

Basic 认证

curl -u ada:s3cret \
  https://api.example.com/private

curl Basic 认证使用 `-u user:pass`;curl 会将凭据 Base64 编码后放入 `Authorization: Basic …` 请求头中传输。请务必通过 HTTPS 发送 Basic 认证——Base64 是编码而非加密,可被轻易还原。

详细调试模式

curl -v -i https://api.example.com/health

当请求出现异常时,`-v` 会打印完整的请求行、所有发送和接收的请求头以及 TLS 握手过程;`-i` 在响应体中包含响应头。这是 API 返回错误状态码时的首要排查手段。

如何构建 curl 命令

  1. 1

    选择 HTTP 方法

    选择 GET、POST、PUT、PATCH、DELETE、HEAD 或 OPTIONS。curl 默认为 GET;选择 POST 或其他动词会在生成的命令中添加 `-X METHOD`。或点击预设芯片,一键设置方法和匹配的请求体。

  2. 2

    输入 URL 和查询参数

    输入请求 URL(如 `https://api.example.com/users`)。以键值对形式添加查询参数,工具会自动进行 URL 编码并将 `?key=value&…` 追加到 URL——无需手动编码。

  3. 3

    添加请求头和认证

    以键值对形式添加请求头,然后选择认证方案:无、Bearer 令牌、Basic(用户名/密码)或自定义 API 密钥请求头。以服务器期望的精确格式生成正确的 `Authorization` 或自定义请求头。

  4. 4

    设置请求体

    对于 POST/PUT/PATCH,选择请求体类型:粘贴原始 JSON(自动为您添加 `Content-Type` 请求头)、构建 urlencoded 表单字段,或组装 multipart 上传并通过 `@` 前缀将任意字段切换为文件。

  5. 5

    切换选项

    按需开启所需标志——跟随重定向(`-L`)、不安全 TLS(`-k`)、详细模式(`-v`)、包含响应头(`-i`)、压缩(`--compressed`)、输出到文件(`-o`)、连接超时或代理(`-x`)。每次切换都会实时更新命令。

  6. 6

    复制、导出或重置

    复制已完成的命令,导出为 .sh 脚本下载,或重置以清空表单。复制前可使用多行切换在单行和反斜杠续行输出之间切换。

常见 curl 错误

有请求体时遗漏 -X 方法标志

使用 `-d` 发送请求体时,默认使用 POST,但如果需要 PUT 或 PATCH,必须使用 `-X` 显式指定。遗忘此标志会导致请求体以 POST 方式发送,服务器返回错误状态码或拒绝请求。

✗ 错误
# Intended a PATCH, but -d alone implies POST
curl -d '{"role":"admin"}' \
  https://api.example.com/users/7
✓ 正确
# Set the verb explicitly
curl -X PATCH -d '{"role":"admin"}' \
  -H 'Content-Type: application/json' \
  https://api.example.com/users/7

JSON POST 请求缺少 Content-Type

使用 `-d` 发送 JSON 时,curl 不会自动设置 `Content-Type` 请求头——默认使用 `application/x-www-form-urlencoded`。大多数 API 因此无法解析请求体,返回 400 或 415 错误。请务必附加 JSON Content-Type(或使用 JSON 请求体预设,它会自动添加)。

✗ 错误
# Server sees urlencoded, not JSON — 400/415
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ 正确
# Declare the JSON content type
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada"}'

单引号与双引号转义混淆

在双引号中,Shell 会展开 `$`、反引号和 `!`,可能破坏 JSON 或处理载荷中的 `$variable` 时出错。单引号会按字面传递请求体。对于 JSON 请求体请使用单引号;仅在 `cmd.exe`(不支持单引号)时才切换为双引号。

✗ 错误
# $name gets expanded by the shell to empty string
curl -d "{\"user\":\"$name\"}" \
  https://api.example.com/users
✓ 正确
# Single quotes send the body literally
curl -d '{"user":"$name"}' \
  https://api.example.com/users

在 GET 请求中使用 -d

添加 `-d` 会静默地将请求转换为 POST。如果您需要携带查询参数的 GET 请求,请将参数放在 URL 中(或使用 `-G` 将 `-d` 数据折叠到查询字符串中)。在 GET 请求上使用 `-d` 是"GET 请求不工作"最常见的原因之一。

✗ 错误
# -d makes this a POST, not a GET
curl -d 'page=2&limit=50' \
  https://api.example.com/users
✓ 正确
# Query string on the URL keeps it a GET
curl 'https://api.example.com/users?page=2&limit=50'

Windows 续行符:^ 与 \

反斜杠(`\`)在 bash、Git Bash 和 WSL 中用于续行。在 `cmd.exe` 中,续行符是脱字符(`^`),PowerShell 使用反引号(`` ` ``)。将反斜杠续行的命令粘贴到 `cmd` 中会导致出错——对于 Windows `cmd`,请将工具切换为单行输出。

✗ 错误
:: cmd.exe — backslash is not a continuation char
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ 正确
:: cmd.exe — one line, or use ^ to continue
curl -X POST https://api.example.com/users -d "{\"name\":\"Ada\"}"

URL 中的空格未编码

URL 或查询值中的原始空格(以及 `&`、`#`、`?`)会破坏命令——Shell 会分割参数,curl 看到的是截断的 URL。请对值进行百分比编码(空格变为 `%20`)或使用 curl 的 `--data-urlencode` 处理编码。此工具的查询参数字段会自动编码。

✗ 错误
# Space splits the argument — curl sees two args
curl https://api.example.com/search?q=hello world
✓ 正确
# Encode the space (or quote the whole URL)
curl 'https://api.example.com/search?q=hello%20world'

常见使用场景

REST API 测试
无需离开终端,直接针对 REST 端点构建并发送请求:设置方法、粘贴 Bearer 令牌、发送 JSON 请求体,读取响应。在编写客户端代码之前,这是确认 API 行为的最快方式。
从文档重现请求
API 文档展示端点和参数,但很少提供完整的可直接运行的命令。在此填写方法、URL、请求头和认证,即可获得可直接运行的 curl 命令——不再为引号规则或缺少 `Content-Type` 请求头而烦恼。
CI/CD 冒烟测试脚本
为健康检查或部署后冒烟测试生成 curl 命令,然后导出为 .sh 文件放入流水线。添加 `--connect-timeout` 和 `--max-time` 以防止挂起的端点阻塞构建,并使用 `-w` 检查状态码。
文件上传与下载
组装带有 `-F field=@file` 的 `multipart/form-data` 上传,或构建跟随重定向到 CDN 的 `-L -o filename` 下载。对于复杂的文件名或查询值,可先使用我们的 URL 编码器 进行编码。
Webhook 调试
通过 POST 提供商发送的相同 JSON 请求体(含正确的签名和 `Content-Type` 请求头)来重放 Webhook 载荷。在本地重现确切的请求,以调试处理程序拒绝的原因。
可复现的 Bug 报告
在 Bug 报告或 PR 中粘贴一条自包含的 curl 命令,任何人都可以重现确切的请求——包含方法、请求头、认证占位符和请求体。远比用文字描述请求清晰。
学习 curl 标志
观察每个表单选项如何映射到真实的标志——选择 Basic 认证时看 `-u` 出现,添加 JSON 请求体时看 `Content-Type` 请求头自动附加。一种直观学习语法的方式,配合我们的 curl 速查表 使用效果更佳。
为代码转换准备请求
先以 curl 构建并验证请求,然后将其转换为应用程序的 HTTP 客户端代码。即将推出的"转换"标签页将把粘贴的 curl 命令转换为 fetch、requests、Go、PHP、Ruby 和 Node.js——从一条已知有效的 curl 命令开始。

curl 标志与语法参考

Shell 引号与转义
工具使用单引号包裹值,这是 POSIX Shell 中最安全的形式,因为单引号字符串内的任何内容都不会被展开。值中的字面单引号以 `'\''` 序列输出(关闭引号、转义引号、重新开启引号)。在 `cmd.exe` 中请切换为双引号;Git Bash 和 WSL 可直接运行生成的单引号命令,无需修改。
-d 与 --data-raw 与 --data-binary
`-d`/`--data` 发送请求体时会去除换行符和回车符——对于 `key=value` 键值对没问题,但对于多行内容会造成损失。`--data-raw` 与之相同,但不会将开头的 `@` 视为文件名。`--data-binary` 完全按原样发送字节(使用 `@file` 上传原始文件内容)。这三者均默认使用 POST,除非覆盖方法。
Multipart(-F)与 URL 编码(-d)
`-F field=value` 生成带有自动边界的 `multipart/form-data`——文件上传(`-F file=@path`)和混合文件/文本表单必须使用此方式。`-d field=value` 生成 `application/x-www-form-urlencoded`,即以 `&` 连接的单个字符串。对于 multipart,切勿手动设置 `Content-Type`;curl 会自行计算边界并设置请求头。
认证请求头编码
Bearer 认证按原样发送 `Authorization: Bearer `(RFC 6750)。通过 `-u user:pass` 的 Basic 认证会将凭据 Base64 编码后放入 `Authorization: Basic ` 中传输——这是编码而非加密,请务必使用 HTTPS。API 密钥则是服务要求的任意自定义请求头,例如 `X-API-Key: `。
查询字符串编码
构建器中添加的查询参数会进行百分比编码,并以 `?key=value&key2=value2` 的形式追加。保留字符(空格、`&`、`=`、`#`)会被转义以确保 URL 有效。对于必须编码的请求体字段,curl 自带的 `--data-urlencode` 可在请求时处理编码。
重定向行为(-L)
不带 `-L` 时,curl 打印 301/302 响应后停止。带 `-L` 时,它会跟随 `Location` 请求头到最终 URL。注意:当重定向跨越不同主机时,curl 会丢弃 `Authorization` 请求头(这是安全默认行为);仅在充分了解其影响的情况下才使用 `--location-trusted`。
压缩响应
`--compressed` 添加 `Accept-Encoding` 请求头,声明支持 gzip/deflate/brotli,并透明地解压响应,节省带宽。解码后的响应体与未压缩请求完全相同——这纯粹是传输优化,在大多数 API 调用中可安全启用。
输出:-o 与 -O
`-o filename` 将响应体写入您命名的文件;`-O` 使用 URL 路径中的远程文件名保存。两者均会抑制正常的标准输出。与 `-L` 结合使用,可在写入文件前将重定向解析到真实资源。

curl 请求最佳实践

切勿在共享命令中硬编码密钥
粘贴到 PR、工单或聊天中的 curl 命令会被他人看到并被工具索引。请将令牌和密码替换为占位符(`YOUR_TOKEN`)或引用环境变量(`-H "Authorization: Bearer $API_TOKEN"`)。对于长凭据,curl 可通过 `-H @headerfile` 从文件读取请求头,这样密钥就不会出现在 Shell 历史记录中。
对二进制载荷优先使用 --data-binary @file
当请求体是字节内容重要的文件时——图片、已签名的载荷、空白字符有意义的 JSON——请使用 `--data-binary @file` 而非 `-d @file`。普通的 `-d` 会去除换行符和回车符,静默地破坏二进制和多行内容。`--data-binary` 会按磁盘上的原样发送文件。
为请求头值加引号
始终用引号包裹 `-H` 的值:`-H 'Content-Type: application/json'`。不加引号时,冒号后的空格会分割参数,curl 会看到格式错误的请求头。单引号还可以防止 Shell 展开值中的 `$`、`*` 和其他特殊字符——这正是此工具默认生成的格式。
使用 --compressed 节省带宽
在 API 调用和下载中添加 `--compressed`,以请求 gzip/brotli 编码并让 curl 透明解压。对于 JSON 密集型 API,这可以将传输大小减少 70–90%,而您看到的响应不变——对于频繁轮询端点的脚本来说是免费的性能提升。
在脚本中设置超时
在任何自动化上下文中,添加 `--connect-timeout` 和 `--max-time`,防止缓慢或挂起的端点永久阻塞流水线。带有 `--max-time 10` 的健康检查可快速失败并让 CI 继续运行。与 `--retry N` 配合使用,以应对瞬时网络抖动而无需立即放弃。
自动化前先用 -v 验证
在将 curl 命令放入脚本或定时任务之前,先带 `-v` 运行一次,查看确切的请求行、请求头和 TLS 握手。这是发现错误方法、缺少 `Content-Type` 或认证请求头未附加的最快方式——交互式调试,然后在生产中移除 `-v`。

常见问题

这个工具的功能是什么?
它通过简单的表单生成可直接运行的 curl 命令。您可以选择 HTTP 方法、输入 URL、添加查询参数和请求头、选择认证方案(无、Bearer、Basic 或 API 密钥请求头)、设置请求体(JSON、表单、multipart 或文件上传),并切换选项标志(如跟随重定向或详细模式)。填写表单时,页面底部的 curl 命令会实时重建——可复制、导出为 `.sh` 脚本,或在单行与多行输出之间切换。这是一个专为 REST API 测试、从文档重现请求或将可复现命令放入 Bug 报告而设计的 curl 命令生成器。如需深入了解各标志的参考资料,请参阅我们的 curl 速查表
我的数据(令牌、URL)会被上传吗?
不会。整个命令在您的浏览器中通过 JavaScript 组装。您的令牌、凭据、URL、请求头和请求体从不会被传输、存储或记录到任何服务器——您可以在浏览器的"网络"标签页中确认这一点:构建命令不会触发任何网络请求。这正是该工具可以安全用于真实生产端点和真实 API 密钥的原因:您输入的任何内容都不会离开您的设备。只有当您将命令复制并在自己的终端中运行时,它才会真正执行。
如何在 curl 中发送带有 JSON 的 POST 请求?
将方法设置为 POST 并选择 JSON 请求体类型,工具会生成 `curl -X POST -H 'Content-Type: application/json' -d '{…}'`。两个关键点:`-d`(或 `--data`)标志携带请求体,`Content-Type: application/json` 请求头告知服务器如何解析——省略该请求头,许多框架会忽略或错误解析载荷。较新版本的 curl(7.82+)还提供了 `--json` 快捷方式,可同时设置请求头和请求体。调用后,可将响应粘贴到我们的 JSON 格式化工具 中进行美化和验证。
如何在 curl 请求中添加 Bearer 令牌?
添加值为 `Bearer YOUR_TOKEN` 的 `Authorization` 请求头,或选择"GET with Bearer"预设并粘贴您的令牌。生成的命令为 `curl -H 'Authorization: Bearer YOUR_TOKEN'`。格式要求:`Bearer` 一词、一个空格,然后是令牌——这是 OAuth 2.0 Bearer 规范(RFC 6750)要求的确切格式。在发送令牌前,可使用我们的 JWT 解码器 解码令牌的声明和过期时间。
如何使用 curl 上传文件?
使用 Multipart 请求体类型并将某个字段切换为"文件":工具会生成 `curl -X POST -F 'file=@/path/to/file'`。`@` 前缀告诉 curl 从磁盘读取文件并以 `multipart/form-data` 形式发送;同一请求中可同时添加更多文件字段和纯文本字段。对于 multipart,请勿手动设置 `Content-Type` 请求头——curl 会自动生成边界并设置请求头,覆盖它会导致上传失败。对于单文件 PUT,curl 使用 `-T file `。
能否导入从浏览器开发工具复制的命令("Copy as cURL")?
暂不支持——这是"转换"标签页的功能,将在下一个版本中推出。届时它将解析粘贴的 curl 命令(包括开发工具通过"Copy as cURL"生成的命令),并将其转换为 JavaScript fetch、Python requests、Go、PHP、Ruby 和 Node.js。目前该工具是一个构建器:请通过手动填写 URL、请求头、认证和请求体字段来重建请求。开发工具的输出虽然冗长但可读——将每个 `-H` 请求头复制到请求头区域,将 URL 复制到 URL 字段即可。
curl 在 Windows 上有何不同?
curl 二进制程序的行为相同,但 Shell 引号规则不同。在 `cmd.exe` 中,需要用双引号(`"`)包裹值,用脱字符(`^`)续行,单引号没有特殊含义。在 PowerShell 中,`curl` 是 `Invoke-WebRequest` 的别名,除非显式调用 `curl.exe`,且引号规则也不同。最简便的选择是使用 Git Bash 或 WSL,工具生成的 Unix 风格单引号命令可直接运行。如果必须使用 `cmd`,请将生成的命令切换为单行模式,并将 `'…'` 引号替换为 `"…"`。
-d、--data-raw 和 --data-binary 有什么区别?
`-d`(别名 `--data`)发送请求体时会去除数据中的换行符和回车符——对于 `key=value` 表单键值对没问题,但对于跨行的 JSON 会有损失。`--data-raw` 与之相同,但不会将开头的 `@` 视为文件名,因此当数据可能以 `@` 开头时更安全。`--data-binary` 完全按原样发送字节,不进行任何换行符处理——适用于上传文件原始内容(`--data-binary @file.json`)或任何空白字符有意义的载荷。这三者均默认使用 POST,除非显式覆盖方法。
如何用 curl 发送 Cookie?
使用 `-b` 发送 Cookie,使用 `-c` 保存 Cookie。`-b 'name=value'` 发送字面量 Cookie 字符串,而 `-b cookies.txt` 从 Netscape 格式文件中读取 Cookie。要捕获服务器设置的 Cookie(例如登录后),添加 `-c cookies.txt` 将其写入 Cookie 容器,然后在下一次请求中用 `-b cookies.txt` 复用该容器。此构建器专注于请求头、认证和请求体;对于 Cookie 请求头,也可以在请求头区域直接添加 `Cookie: name=value` 请求头。
如何跟随重定向?
切换"跟随重定向(-L)"选项,或手动添加 `-L` 标志。默认情况下,curl 打印 301/302 响应后停止;`-L` 告诉它跟随 `Location` 请求头到最终目标地址。这对于 CDN 后面的下载链接、短链接以及将 HTTP 重定向到 HTTPS 的 API 至关重要。将其与 `-o filename` 结合使用,可在重定向解析后保存下载的文件。
如何设置请求超时?
使用"连接超时"选项添加 `--connect-timeout <秒>`,限制 curl 等待建立连接的最长时间。要对整个传输过程(包括连接和下载)设置上限,可在生成的命令中手动添加 `--max-time <秒>`。在任何脚本或 CI 冒烟测试中,设置超时是最佳实践:没有超时,一个挂起的端点可能会无限期阻塞您的流水线。可搭配 `--retry N` 使用,以便在出现瞬时故障时重试,而不是立即放弃。