HTTP Client 变量
在编写 HTTP 请求时,您可以通过使用 variables来参数化其元素。 变量可以保存请求的 host、port 和 path、查询参数或值、标头 值或请求正文中或外部文件中使用的任意值。
在请求中使用变量
将变量用双花括号括起来,如
{{variable}}。
变量名称可以包含字母、数字、下划线符号 _ 、连字符符号 - 或点符号 . (请参阅 下面的注释 了解变量名称中的点)。
HTTP Client 中有几种类型的变量。 以下是按优先顺序列出的变量名;如果变量名冲突,将使用列表中优先级较高的值:
环境变量 定义在特殊环境文件中,并在任何 .http 文件中可用(如果发生名称冲突,公共变量优先于私有变量)。
在 响应处理程序脚本中使用
client.global.set方法定义的全局变量。就地变量 定义在 .http 文件中且仅在同一文件内可用。
将 每个请求变量 在请求之前使用
request.variables.set方法定义,并且仅在此请求中可用。
此外,HTTP Client 提供了 内置动态变量 ,其值是动态生成的。 此类变量有保留名称。
环境变量
环境变量允许您在项目中存储一组环境定义。 例如,您可以在不同的环境中创建 {{host}} 变量:在开发环境中使用本地主机名,在生产环境中使用公共主机名,而不是在请求中明确提供主机名。 您可以使用当前 运行方式 文件编辑器顶部的 .http 列表来选择一个环境:
无环境 :如果选择此选项,运行当前文件中的请求时不会使用环境。 如果您的请求不包含任何变量,请选择它。
环境名称(如 生产环境 或 开发 ):所选环境将用于当前文件中的所有请求,您在点击
时无需选择它。 这在您想要使用相同的环境运行多个请求时非常有用,并且不希望每次运行请求时都选择它。
<运行前选择环境> :选择此选项后,每次点击
时,您都必须选择一个环境。 如果您经常切换环境,并且希望在每次运行时明确选择它们以确保使用所需的环境执行请求,这将非常方便。

所选环境将在 查看请求结构、 在浏览器中打开请求、 执行请求 和 为其创建运行/调试配置 时用作默认环境。
定义环境变量
环境变量定义在 环境文件中。
在请求的编辑面板顶部,在 运行方式 列表中,选择您想要添加环境的位置:
如果您希望环境是公开的,请选择 将环境添加到公共文件…。 这将把环境添加到 http-client.env.json 文件中。 此文件可以包含通用变量,例如主机名、端口或查询参数,并旨在与您的项目一起分发。
选择 添加环境到私人文件…… 如果您希望环境是私有的。 这将把环境添加到 http-client.private.env.json 文件中。 该文件可能包含密码、令牌、证书及其他敏感信息。 在 http-client.private.env.json 文件中指定的变量值会覆盖公共环境文件中的值。
将所创建的文件填充所需的变量。
以下示例 http-client.env.json 环境文件定义了两个环境: development和 production。 附加的 http-client.private.env.json 文件包含敏感的授权数据。
{ "development": { "host": "localhost", "id-value": 12345, "username": "", "password": "", "my-var": "my-dev-value" }, "production": { "host": "example.com", "id-value": 6789, "username": "", "password": "", "my-var": "my-prod-value" } }{ "development": { "username": "dev-user", "password": "dev-password" }, "production": { "username": "user", "password": "password" } }示例 HTTP 请求如下:
GET http://{{host}}/api/json/get?id={{id-value}} Authorization: Basic {{username}} {{password}} Content-Type: application/json { "key": "{{my-var}}" }在 您 执行请求之前,CLion 允许 您 使用请求编辑面板顶部的 运行方式 列表选择执行环境。
根据您的选择,生成的请求将是以下之一:
GET http://localhost/api/json/get?id=12345 Authorization: Basic dev-user dev-password Content-Type: application/json { "key": "my-dev-value" }GET http://example.com/api/json/get?id=6789 Authorization: Basic user password Content-Type: application/json { "key": "my-prod-value" }
如果在执行请求时变量未解决,CLion 将显示通知,让您能够快速创建、更新或选择不同的执行环境。

管理多个环境文件
您的项目中可能有多个包含 HTTP 请求文件及其相应环境文件的目录。 在这种情况下,在为请求选择环境时可以使用以下部分:
对于文件 显示存储在当前和父目录中的环境。
如果从此列表中选择环境,HTTP 客户端 将尝试在当前目录中存储的文件(公共和私有)中找到它。 如果没有此环境的文件,它会检查父目录。
来自整个项目 显示了存储在项目中所有其他位置(当前目录和父目录之外)的环境。 如果这些目录中的文件包含与 对于文件 部分中的环境同名的环境,则不会在列表中显示。
如果您希望在项目中随处可见某个环境,可以为其指定一个唯一名称。

让我们用一个示例来说明这一点。 假设您有以下项目结构:
存储在 service1 目录中的 .http 文件将在您选择 dev 环境时使用 myKey1 值作为 key 变量。 存储在 service2 目录中的 .http 文件将使用 myKey2 值作为 key 变量。
如果私有文件包含 host 变量,那么 .http 文件将使用其值,因为私有文件优先于公共文件。 否则,他们将使用公共文件中的值。
就地变量
在声明它的 .http 文件中,内置变量的作用域。 如果您希望在同一个文件中的多个请求中引用相同的变量,请使用就地变量。
要创建一个就地变量,请输入 @ ,然后在 HTTP 方法部分上方输入变量名称。 例如:
每个请求变量
您可以使用 request.variables.set(variableName, variableValue) 方法设置 HTTP 请求中使用的变量值。 请将其写入 HTTP 请求上方的 {% ... %} 中的预请求脚本。 例如:
在预请求脚本中定义的变量仅在脚本后随后的单个请求中可用。
使用 初始化变量 上下文操作(Alt+Enter ),可快速添加就地或环境变量,或在预请求处理脚本中初始化变量。

在预请求脚本中,您还可以使用 HTTP 客户端 Crypto API 生成基于加密哈希函数(如 SHA-1、SHA-256、SHA-512、MD5)的 HTTP 签名,并将它们作为变量传递给您的请求。 例如:
动态变量
动态变量在每次运行请求时生成一个值。 他们的名字以 $ 开头:
$uuid或$random.uuid: 生成一个全局唯一标识符 (UUID-v4)$timestamp:生成当前 UNIX 时间戳$isoTimestamp:生成 UTC 时区的 ISO-8601 格式的当前时间戳。$randomInt:生成一个 0 到 1000 之间的随机整数。$random.integer(from, to):生成from(包括)和to(不包括)之间的随机整数,例如 random.integer(100, 500)。 如果您未提供任何参数,它会生成一个介于 0 和 1000 之间的随机整数。$random.float(from, to):生成介于from(包含)和to(不包含)之间的随机浮点数,例如 random.float( 10.5, 20.3 )。 如果您不提供参数,它将生成一个 0 到 1000 之间的随机浮点数。$random.alphabetic(length):生成长度为length(必须大于 0)的大小写字母序列。$random.alphanumeric(length):生成长度为length(必须大于 0)的大小写字母、数字和下划线序列。$random.hexadecimal(length):生成一个长度为length的随机十六进制字符串(必须大于 0)。$random.email:生成随机电子邮件地址。$exampleServer:被替换为 CLion 内置 web 服务器,只能使用 HTTP 客户端 进行访问。 变量用于 GraphQL 和 WebSocket 示例。
更多动态变量
您可以生成其他类型的随机数据,例如地址、颜色和公司名称。 HTTP 客户端支持 Java faker 库中的以下类(以及不需要任何参数的这些类的方法):
$random.address$random.beer$random.bool$random.business$random.ChuckNorris.fact$random.code$random.color$random.commerce$random.company$random.crypto$random.educator$random.finance$random.hacker$random.idNumber$random.internet$random.lorem$random.name$random.number$random.phoneNumber$random.shakespeare$random.superhero$random.team$random.university
开始键入 {{$random.}} 以获取可用变量的建议。
在请求部分中使用动态变量,例如 URL 参数或正文:
在预请求处理程序脚本和响应处理程序脚本中,像常规 JavaScript 变量一样使用它们,无需大括号。 例如:
系统环境变量
在 HTTP 客户端中,您可以使用操作系统中的环境变量。
要访问它们,请使用 {{$env.ENV_VAR}} 语法,其中 ENV_VAR 是您的环境变量的名称。 在预请求处理程序脚本和响应处理程序脚本中,像常规 JavaScript 变量一样使用它们,无需大括号。 例如:
开始键入变量名称以获取可用变量的建议:

遍历变量中的集合
环境变量和 在预请求脚本中初始化的变量可以表示一个元素集合,例如,ID 或用户名列表。 当此类变量在 HTTP 请求中使用时,HTTP 客户端 会为此列表中的每个元素发送单独的请求。 CLion 还支持这些变量的 JSONPath 表达式,使您能够访问特定元素或元素子集,并为每个元素发送请求。
例如,如果您有一个通过 ID 返回有关图书信息的服务器,您可以将一个 JSON 数组 [1,2,3,4,5] 分配给变量 id ,然后在主体或 URL 部分使用它。
HTTP 客户端 将发送五个连续请求,每个请求都会用集合中的后续项替换变量。
同样,您可以在请求主体中使用集合。 在以下示例中,HTTP 客户端 将发送三个请求,其主体中的值分别为: name: Alice、 name: Bob 和 name: Charlie。
使用 JSONPath,您还可以访问数组中 JSON 对象的特定参数。 例如,在以下查询中,HTTP 客户端 将为名为 users 的变量内的所有对象的每个 name 值发送请求。
为了便于在变量中使用 JSONPath,CLion 为您提供 JSONPath 编码支持,包括已知 JSON 对象参数的自动完成、验证和高亮显示。 JSONPath 语言在所有 HTTP 客户端 变量(用双花括号括起来)中被 注入 ,但不包括 动态变量。

若要在前置请求脚本和响应处理脚本中获取循环的当前索引,请使用 request.iteration() 方法。 例如, 0 表示正在处理数组的第一个项目,并正在发送第一个请求。
""" request.iteration() 的示例 """
要在预请求脚本和响应处理器脚本的循环中通过索引获取值,请使用 request.templateValue(Integer) 方法。