如何使用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>
将
例如:
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 客户端。
这些选项中的每一个都有其优点和权衡。最终,您对工具的选择将取决于您的任务要求。