理解 cURL 命令的用途和工作原理

今天专门来讨论下 API 测试中不可避免的部分之一 :cURL。

cURL(client URL)是一个常用的命令行工具,用于通过 URL 传输数据。

开发人员通过 cURL 将数据发送到服务器并接收来自服务器的数据。具体来说,任何用户都可以通过这个命令行界面(CLI)指定一个服务器 URL(要向其提交请求的位置)和要发送到服务器 URL 的数据。cURL 支持多种协议(方案),如 DICTFILEFTP(S)GOPHER(S)IMAP(S)MQTTRTSP 等,当然还有 HTTP

根据使用的 cURL 协议不同,语法可能会发生变化。这里我们将重点介绍 API 测试中最常用的 HTTP 协议 cURL 结构。标准 cURL 结构将如下所示:

css 复制代码
curl - [method] URL [options] 

cURL 在 API 测试中的地位

在 API 测试中,可以使用 cURL 自动执行文件传输或类似的一系列操作。它是一个非常有用的工具,比如说可以模拟客户使用 API 的行为。基本上,通过使用 cURL,用户只需花费很少的时间就可以将带有所有必要参数的不同请求导入或导出到所需的任何应用或平台,如查询参数、标头、cookie、身份验证等。

让我们看一些例子。

在 API 测试应用中使用 cURL 命令

假设你想将一些 GET 请求 发送到服务器,该如何将它导入 API 测试应用里呢?有两种主要方法。

第一,你可以手动完成,找到源并从中复制请求 URL,打开应用,创建一个新请求,然后将其粘贴到 URL 字段中。

第二,你可以复制你想要发送的请求的 cURL,然后直接粘贴到应用中,而应用本身定义了你所需的请求类型,并从 cURL 中将所有信息粘贴到正确的请求字段中。

你觉得哪种方法花费更少的时间精力?答案很明显了对不对!

一个简单的 GET 请求的 cURL 就像这样:

rust 复制代码
curl -X GET 'https://httpbin.org/json' 

如你所见,cURL 包含请求方法、URL 而没有额外参数。在 API 测试应用程序中,将显示如下:

看,就这么简单!你只需要复制 cURL 并将其粘贴到应用程序中就可以了,这就是 cURL 在 API 测试中的使用方式。

现在,让我们看一看带有不同参数的复杂请求。

举个例子,我从 Zoom API 中取了一个 PATCH 请求:

这个 cURL包含:

  • 请求方法:PATCH
  • header:H 'Content-Type:application/json'
  • body:d '{<<stream_url>>:>>``https://example.com/livestream``","stream_key":"ABCDEFG12345HIJ6789","page_url":"``https://example.com/livestream/123``"}

在下面的截图中,你可以看到所有请求数据都已成功传输到应用程序中了:

cURL 的优点在于你可以传输大量数据。 接下来我们将尝试导入带有查询和变量的 GraphQL 请求:

在上面这个例子我们可以看到,除了标准的请求方法外,URL、header query 和其他变量也被列出来了。

在 API 测试程序中导入此 cURL 后,我们将看到所有请求部分都已正确传输:

如何创建 cURL?

我们讨论了如何将不同的 cURL 导入应用程序,但我们用的是已经创建好的 cURL。

那么问题来了,它们是如何创建的?每一个 cURL 都是由不同人在不同的应用程序或网站生成的,而这就像导入已经创建好的cURL一样简单。

在 API 测试应用 中,你可以生成 cURL,也可以导入它们。要创建 cURL,你需要打开任何请求,如果有需要也可以添加其他参数,点击请求屏幕上方的三点图标,选择"导出 cURL" ,你的 cURL 就创建成功了。

生成的 cURL 如下所示:

你可以复制它并与他人分享,或者你可以像开头那样再次将其粘贴到应用程序中。

总结

对于任何 API 测试人员来说,cURL 都是一个非常有用的工具。它不仅可以节省大量时间,还可以避免在不同来源之间传输数据时出错的情况。当然,这篇文章中只是展示了一些基础知识,而 cURL 命令行要复杂得多。

相关推荐
苏三的开发日记9 分钟前
linux搭建hadoop服务
后端
sir76125 分钟前
Redisson分布式锁实现原理
后端
大学生资源网1 小时前
基于springboot的万亩助农网站的设计与实现源代码(源码+文档)
java·spring boot·后端·mysql·毕业设计·源码
苏三的开发日记1 小时前
linux端进行kafka集群服务的搭建
后端
苏三的开发日记1 小时前
windows系统搭建kafka环境
后端
爬山算法1 小时前
Netty(19)Netty的性能优化手段有哪些?
java·后端
Tony Bai1 小时前
Cloudflare 2025 年度报告发布——Go 语言再次“屠榜”API 领域,AI 流量激增!
开发语言·人工智能·后端·golang
想用offer打牌2 小时前
虚拟内存与寻址方式解析(面试版)
java·后端·面试·系统架构
無量2 小时前
AQS抽象队列同步器原理与应用
后端
9号达人2 小时前
支付成功订单却没了?MyBatis连接池的坑我踩了
java·后端·面试