什么是 cURL?为什么它在 API 测试中如此重要?🤖 cURL 在 API 测试中的作用 在 API Tester 应用中使用 cURL 命令 如何创建 cURL? 结论

2025-06-07

什么是 cURL 以及为什么它在 API 测试中很重要?🤖

cURL 在 API 测试中的位置

在 API Tester 应用中使用 cURL 命令

如何创建 cURL?

结论

今天的帖子专门讨论 API 测试中不可避免的部分之一——cURL。

cURL(客户端 URL)——是一个用于通过 URL 传输数据的命令行工具和库。

开发人员使用 cURL 与服务器之间发送和接收数据。具体来说,任何用户都可以使用此命令行界面 (CLI) 指定服务器 URL(他们想要提交请求的位置)以及他们想要发送到该服务器 URL 的数据。cURL 支持多种协议(方案),例如 DICT、FILE、FTP(S)、GOPHER(S)、IMAP(S)、MQTT、RTSP 等,当然也支持 HTTP。

根据 cURL 所用的协议,语法可能会有所不同。本文我们将重点介绍 HTTP 协议的 cURL 结构,因为它在 API 测试中最常用。标准的 cURL 结构如下所示:

curl - [method] URL [options]

cURL 在 API 测试中的位置

在 API 测试中,可以使用 cURL 自动执行文件传输或一系列类似操作。例如,它是一个实用的工具,可用于使用 API 建模客户端操作。基本上,通过使用 cURL,用户可以将包含所有必要参数(例如查询参数、标头、Cookie、身份验证等)的不同请求导入或导出到所需的任何应用或平台,而且只需花费很少的时间。

让我们看一些例子。

在 API Tester 应用中使用 cURL 命令

假设您有一些 GET 请求想要发送到服务器,如何将其导入API Tester应用?主要有两种选择。
第一种,您可以手动操作:找到源,从那里复制请求 URL,打开应用,创建一个新的请求,然后将其粘贴到 URL 字段中。
第二种,您可以复制要发送的请求的 cURL 并将其直接粘贴到应用,同时由应用本身定义您需要的请求类型,并将 cURL 中的所有信息粘贴到正确的请求字段中。您认为哪种方法更省时省力?在我看来,答案显而易见。

简单 GET 请求的 cURL 可能如下所示:

curl -X GET ‘https://httpbin.org/json'

如您所见,cURL 包含请求方法、URL,没有其他参数。在 API Tester 应用中,它将显示如下:

图片描述

瞧,这有多简单?你只需要复制 cURL 并将其粘贴到应用程序中即可。这就是 cURL 在 API 测试中的工作原理。

现在,我们来看一个包含不同参数的更复杂的请求。例如,我以 Zoom API 中的 PATCH 请求为例:

curl -X PATCH ' https://api.zoom.us/v2/videosdk/sessions/KkMHZ4y8QhSUWAHi5sWvfg==/livestream ' -H 'Content-Type:application/json' -d '{"stream_url":" https://example.com/livestream ","stream_key":"ABCDEFG12345HIJ6789","page_url":" https://example.com/livestream/123 "}'

此 cURL 包含有关请求方法(PATCH)、标头(H ‘Content-Type:application/json’)和正文(d ‘{«stream_url»:»https://example.com/livestream","stream_key":"ABCDEFG12345HIJ6789","page_url":"https://example.com/livestream/123"})的信息。

在下面的屏幕截图中,您可以看到所有请求数据已成功传输到应用程序。

图片描述

cURL 的优点在于可以传输大量数据。在下一个示例中,我们将尝试导入包含查询和变量的 GraphQL 请求:

curl -X POST ' https://graphqlpokemon.favware.tech/ ' -H 'Content-Type:application/json' -d '{"query":"Pokemon 的片段数据 {\n num\n species\n types\n ability { first second hidden }\n baseStats { hp attack defensive specialattack specialdefense speed }\n gender { male Female }\n height\n weight\n flavorTexts { game flavor }\n evYields { hp attack defensive specialattack specialdefense speed }\n isEggObtainable\n minimumHatchTime\n maximumHatchTime\n levellingRate\n sprite\n shineSprite\n backSprite\n shineBackSprite\n smogonTier\n smogonPage\n serebiiPage\n bulbapediaPage\n}\n\nquery($pokemon: PokemonEnum! $reverse: Boolean! $take:Int!){\n getPokemon(pokemon:$pokemon reverseFlavorTexts:$reverse takeFlavorTexts:$take){\n ...data \n } \n}»,“variables”:{“pokemon”:“arceus”,“reverse”:true,“take”:1}}'

这里我们可以看到,除了标准请求方法外,还列出了 URL、标头查询和变量。将此 cURL 导入 API Tester 后,我们将看到所有请求部分都已正确传输:

图片描述

如何创建 cURL?

我们讨论了如何将不同的 cURL 导入应用,但我们使用的是已创建的 cURL。问题是,它们是如何创建的?每个 cURL 都是由用户使用不同的应用或网站生成的——这和导入已创建的 cURL 一样简单。

在 API Tester 中,您可以生成并导入 cURL。要创建 cURL,您需要打开任意请求,添加其他参数(如果需要),点击请求屏幕上方的三个点图标,您将看到“导出 cURL”——点击它,您的 cURL 就创建完成了。

我们生成的 cURL 如下所示:

curl -X POST ' https://petstore.swagger.io/v2/pet ' -H 'Content-Type:application/json' -d '{"type":"object","re​​quired":["name","photoUrls"],"properties":{"id":{"type":"integer","format":"int64"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"Category"}},"name":{"type":"string","example":"doggie"},"photoUrls":{"type" :“array”,“xml”:{“wrapped”:true},“items”:{“type”:“string”,“xml”:{“name”:“photoUrl”}}},“tags”:{“type”:“array”,“xml”:{“wrapped”:true},“items”:{“xml”:{“name”:“tag”},“type”:“object”,“properties”:{“id”:{“type”:“integer”,“format”:“int64”},“name”:{“type”:“string”}}}},“status”:{“type”:“string”,“description”:“商店中的宠物状态»,“enum”:[“available”,“pending”,“sold”]}},“xml”:{“name”:“Pet”}}'

您可以复制它并与他人共享,或者将其再次粘贴到应用程序中,就像我们在帖子开头所做的那样。

结论

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

感谢阅读!希望本文对您有所帮助。如有任何问题、评论或建议,欢迎随时留言。

顺便说一句,你可以请我喝杯咖啡来支持我的工作!我会在这里留一些链接给你:)

在 ko-fi.com 给我买杯咖啡

您也可以在Coinbase上支持我

文章来源:https://dev.to/mariamarsh/what-is-curl-and-why-is-it-important-in-api-testing-416m
PREV
成为一名开发人员是什么感觉?(动图)🗿
NEXT
Spring Security:深入身份验证和授权