网站搜索

如何使用curl发出HTTP请求


当您使用 HTTP 代码时,curl 命令行工具是一个完美的助手。测试请求、探索数据格式等等!

超文本传输协议 (HTTP) 是 Internet 通信的支柱,允许在服务器和客户端之间传输数据。然而,与 HTTP 端点交互可能具有挑战性,尤其是对于初学者而言。

幸运的是,curl 这个命令行工具提供了一种简单有效的方式来发送和接收 HTTP 请求。在这里,您将学习如何使用curl 发出基本的POST、GET、DELETE 和PUT HTTP 请求。

安装卷曲

默认情况下,curl 安装在主要操作系统上,包括 macOS、Linux 和 Unix。

您可以通过运行以下命令来确认您已安装curl:

curl

上面的命令应该在终端上打印“try 'curl --help' or 'curl --manual' for more information”。

如果您的操作系统上未安装curl,您可以从curl 下载页面下载并安装它。

发出 HTTP GET 请求

HTTP GET 请求是一种从 Web 服务器请求数据的方法。您可以使用这些请求来检索特定资源,例如网页、图像或视频。

您可以使用curl发出以下格式的GET请求:

curl -X GET <URL>

替换为 URL您要获取的资源。

例如:

curl -X GET https://example.com/todos/1

运行上面的命令会向 URL https://example.com/todos/1 发出 HTTP GET 请求。 -X GET 选项指定 HTTP 方法为 GET。当命令运行时,curl 会向 URL 中指定的服务器发送 GET 请求,并等待服务器的响应。

如果服务器响应成功状态代码,curl 将在终端中显示响应正文,在本例中,该正文将是有关 ID 为 1 的待办事项的 JSON 数据。

或者,您可以在不指定 -X 标志的情况下发出 GET 请求,因为默认情况下,当您不指定时,curl 会发出 GET 请求使用 -X 标志指定请求方法。

例如:

curl https://example.com/todos/1

运行上面的命令将返回与上一个命令相同的响应,并带有“-X GET”标志。

发出 HTTP POST 请求

HTTP POST 请求是一种将数据保存到 Web 服务器的方法。与将数据作为 URL 的一部分发送的 GET 请求不同,POST 请求在请求的消息正文中发送数据。这使得 POST 请求在传输敏感信息时更加安全。

您可以使用curl发出以下格式的POST请求:

curl -X POST -d <data> <URL>

例如:

curl -X POST -d 'name=jack' -d 'email=jack@example.com' \
 https://example.com/users

上面的命令向 https://example.com/users 发送 POST 请求,其中包含由 -d 标志指定的数据作为负载。

-d 标志指定要发送的数据。在本例中,它指定了两个数据参数:name=jack 和 email=jack@example.com。

当您在命令中多次使用 -d 标志时,可以使用 & 符号合并字段。

例如:

curl -d "name=jack&email=jack@example.com" https://example.com/api/users

您可能尝试在 POST 请求中发送的某些数据可能很难放入终端中的单个字符串中。在这种情况下,使用curl 从文件中读取和发布数据可能是理想的选择。

要使用curl将POST请求中的文件中的数据作为有效负载发送,请在-d@符号strong> 标志,后跟您希望curl 在请求中发送的文件的文件路径。

例如:

curl -X POST -d @users.txt https://example.com/api/users

指定内容类型

使用 -d 标志会自动将 Content-Type 标头设置为 application/x-www-form-urlencoded 。但是,您可以使用 -H--header 标志并后跟所需的内容类型,手动为您的请求指定适当的 Content-Type。

例如:

curl -H "Content-Type: application/json" \
 -d '{"name": "Jack", "email": "jack@example.com"}' \
 https://example.com/api/users

在上面的命令中,-H 标志将 Content-Type 标头指定为 Content-Type: application/json

您可以将 application/json 替换为任何其他有效的 MIME 类型或适合您在请求正文中发送的数据的内容类型。例如,上传二进制数据(例如图像或音频文件)时,应将 Content-Type 设置为 多部分/表单数据 <

这允许您指定发送数据的预期格式,这在与需要特定内容类型进行正确处理的 API 或 Web 服务交互时非常重要。

发出 HTTP PUT 请求

HTTP PUT 请求是一种用于更新 Web 服务器上现有资源或在资源不存在时创建资源的方法。此方法与 POST 方法的不同之处在于它是幂等的。这意味着一次或连续多次调用 PUT 方法对服务器具有相同的效果。

您可以使用curl 发出以下格式的PUT 请求:

curl -X PUT -H "Content-Type: application/json" \
 -d '{"name": "Jack Bauer", "email": "jackbauer024@example.com"}' \
 https://example.com/api/users/4

上面的命令将 JSON 格式的 PUT 请求发送到上面 URL 中指定的 Web 服务器并更新指定的资源。如果指定的资源不存在,则会在Web服务器上创建该资源。

发出 HTTP DELETE 请求

HTTP DELETE 请求是一种从 Web 服务器删除指定资源的方法。与 PUT 请求类似,DELETE 请求也是幂等的。向同一资源多次发送同一 DELETE 请求将在服务器上产生相同的结果。

您可以通过运行以下命令使用curl发出DELETE请求:

curl -X DELETE http://example.com/api/users/3

上面的命令向上面 URL 中指定的 Web 服务器发送 DELETE 请求并删除指定的资源。

删除请求从服务器中永久删除指定的资源。因此,支持 DELETE 的 Web 服务器通常需要某种形式的身份验证或授权,然后才能发出此请求。

以下是如何使用授权标头发出 DELETE 请求:

curl -X DELETE -H "Authorization: Bearer my_access_token" \
 https://example.com/api/users/3

上面的命令使用带有 -H 标志的承载身份验证方法在请求标头中提供身份验证信息。 授权:承载 my_access_token 是标头值。 my_access_token 是实际访问令牌值的占位符。

发出 HTTP 请求的其他方式

除了curl之外,还有多种方法可以根据请求的上下文发出HTTP请求。最常见的方法包括使用 Chrome 等 Web 浏览器、Postman 等 GUI 工具或 API 客户端。

这些选项中的每一个都有其优点和权衡。最终,您对工具的选择将取决于您的任务要求。

相关文章: