理解 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 命令行要复杂得多。

相关推荐
柏油5 小时前
MySQL InnoDB 行锁
数据库·后端·mysql
咖啡调调。5 小时前
使用Django框架表单
后端·python·django
白泽talk5 小时前
2个小时1w字| React & Golang 全栈微服务实战
前端·后端·微服务
摆烂工程师5 小时前
全网最详细的5分钟快速申请一个国际 “edu教育邮箱” 的保姆级教程!
前端·后端·程序员
一只叫煤球的猫6 小时前
你真的会用 return 吗?—— 11个值得借鉴的 return 写法
java·后端·代码规范
Asthenia04126 小时前
HTTP调用超时与重试问题分析
后端
颇有几分姿色6 小时前
Spring Boot 读取配置文件的几种方式
java·spring boot·后端
AntBlack6 小时前
别说了别说了 ,Trae 已经在不停优化迭代了
前端·人工智能·后端
@淡 定6 小时前
Spring Boot 的配置加载顺序
java·spring boot·后端