in

如何发送cURL POST请求?

如何发送cURL POST请求

cURL 是一个命令行工具,可以让你向服务器发送请求。它在大多数现代操作系统中都预装了,因此是许多网络项目的理想起点。

虽然有一些应用程序(例如 Postman)提供了更华丽的用户界面来实现相同的目标,但 cURL 更加可靠且层次更低,是自动化和许多其他使用场景的强大选择。


cURL 入门

cURL 在 Windows 10 及以后的版本和大多数 MacOS 操作系统中预装。某些 Linux 发行版可能会提供安装 cURL 的选项,但在很多情况下,你需要通过运行安装命令自行安装:

sudo apt-get install curl

对于较旧版本的 Windows,你可以从 cURL 的官方网站下载。安装完成后,你就可以开始发送请求了。

最后,通过打开终端并输入以下命令来验证是否正确安装:

curl --help

在 Windows 上,最好使用命令提示符(Command Prompt)而不是 Powershell,因为后者需要不同于本文其余部分所展示的格式。


发送 cURL POST 请求

所有 cURL 的使用都遵循相同的结构——调用 cURL 本身,设置请求选项、URL,然后是其他选项,例如头信息。

curl [request options] [URL] [other options]

有些选项,例如前面提到的“–help”,允许你在没有 URL 的情况下执行操作,但它们不会用于发送 cURL POST 请求。

发送 POST 请求有三个要求:

1. `-X` 和 `POST`

前者表示你打算发送请求,后者指定请求方法。

2. `-d` 和一些字符串

前者表示你打算发送一些数据,字符串值是内容。每个 cURL POST 请求都必须发送一些数据。cURL POST 数据可以是任何字符串,但是,API 通常有其格式要求,所以你需要阅读文档。

3. URL

通常是你发送 POST 请求的 API。

为了测试,我们将使用示例 ReqBin API URL。要发送最基本的 POST cURL 请求,只需输入:

curl -X POST https://reqbin.com/echo/post/json -d "YOUR_STRING"

许多 API 要求你以 JSON 格式发送数据,你可以通过如下格式化数据值来实现:

curl -X POST https://reqbin.com/echo/post/json -d '{"KEY":"VALUE", "KEY":"VALUE"}'

调整 cURL POST 请求的高级设置

一些 API 会提供(或要求)更多选项,以充分利用其功能。一个常见的 POST 请求方法需求是添加头信息。

你可以通过添加“-H”并提供头信息来实现:

curl -X POST https://reqbin.com/echo/post/json -d "YOUR_STRING" -H "Content-Type: application/json"

你还可以提供诸如用户代理(例如“User Agent: Chrome”)和接受的字符集(例如“Accept-Charset: utf-8”)等信息。每种类型的头信息都需要使用“-H”选项:

curl -X POST https://reqbin.com/echo/post/json -d '{"KEY":"VALUE", "KEY":"VALUE"}' -H "Content-Type: application/json" -H "Accept-Charset: utf-8"

此外,许多 API 在你提交任何请求方法之前都会有某种形式的身份验证。用户名和密码是一个常见的选项,可以这样包含:

curl --user "USERNAME:PASSWORD" -X POST https://reqbin.com/echo/post/json -d '{"KEY":"VALUE", "KEY":"VALUE"}' -H "Content-Type: application/json"

另一种常见的身份验证选项是发送带有 API 访问令牌的特定头信息。通常看起来像这样:

curl -X POST https://reqbin.com/echo/post/json -d '{"KEY":"VALUE", "KEY":"VALUE"}' -H "Content-Type: application/json" -H "API-Access-Token: YOUR_TOKEN"

最后,你可以使用 cURL 从文件中 POST 数据。你可以通过添加“-d”或“-F”来实现。通常使用“-F”选项:

curl -F "data=@path/to/local/file" https://reqbin.com/echo/post/json

错误处理

每当出现问题时,cURL 会自动生成某种形式的响应。你可以在终端中查看这些响应,并在 cURL POST 响应体中查找错误信息。

例如,如果你向 Google 的域发送一个没有任何数据的 cURL POST 请求,你会收到:

<title>Error 411 (Length Required)!!1</title>
[...]
<p>POST requests require a <code>Content-length</code> header. <ins>That's all we know.</ins>

类似地,带有一些数据的 cURL POST 请求会给你一个不同的错误,表明你不被允许这样做:

<title>Error 405 (Method Not Allowed)!!1</title>
[...]
<p>The request method <code>--POST</code> is inappropriate for the URL <code>/</code>.
<ins>That's all we know.</ins>

一些 API 可能会提供通用的 HTTP 错误,而另一些则会有自定义的响应,告诉你如何更改请求。


总    结

虽然我们概述了许多选项,但 cURL 的文档中还有更多内容。然而,在实际操作中,你主要会修改以下 cURL POST 示例:

curl --user "USERNAME:PASSWORD"
-X POST https://reqbin.com/echo/post/json
-d '{"KEY":"VALUE", "KEY":"VALUE"}'
-H "Content-Type: application/json"

大多数 API 会要求你包含身份验证信息、负载详情(在“-d”下嵌套)、声明内容类型的头信息以及端点的 URL。你可以根据需要轻松调整上述 cURL POST 请求以符合 API 的要求。

Written by 河小马

河小马是一位杰出的数字营销行业领袖,广告中国论坛的重要成员,其专业技能涵盖了PPC广告、域名停放、网站开发、联盟营销以及跨境电商咨询等多个领域。作为一位资深程序开发者,他不仅具备强大的技术能力,而且在出海网络营销方面拥有超过13年的经验。