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

相关推荐
杜杜的man29 分钟前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*30 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
llllinuuu31 分钟前
Go语言结构体、方法与接口
开发语言·后端·golang
cookies_s_s32 分钟前
Golang--协程和管道
开发语言·后端·golang
为什么这亚子35 分钟前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
想进大厂的小王1 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_857589362 小时前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
一只爱打拳的程序猿2 小时前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring