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

相关推荐
栗豆包2 分钟前
w118共享汽车管理系统
java·spring boot·后端·spring·tomcat·maven
万亿少女的梦16814 分钟前
基于Spring Boot的网络购物商城的设计与实现
java·spring boot·后端
开心工作室_kaic2 小时前
springboot485基于springboot的宠物健康顾问系统(论文+源码)_kaic
spring boot·后端·宠物
0zxm2 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
刘大辉在路上9 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
追逐时光者11 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
初晴~11 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱5813611 小时前
InnoDB 的页分裂和页合并
数据库·后端
小_太_阳12 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea