
Postman 是一种开发者工具,用于发出网络请求和测试 API。
Postman
中包含一个 PostmanClient
,你可以使用它来获取和更新你的 Postman 环境,这对于更新环境变量尤其有用。
在你的 Package.swift
文件中,添加以下内容:
.package(url: "https://github.com/vapor-community/postman-provider.git", from: "1.1.0")
注册配置和提供器。
let config = PostmanConfig(apiKey: "your-api-key", environmentUID: "your-environment-uid")
services.register(config)
try services.register(PostmanProvider())
app = try Application(services: services)
postmanClient = try app.make(PostmanClient.self)
注意:environmentUID
是你环境的 "uid"
,**不是**你环境的 "id"
。
Postman
当前的功能围绕环境展开。 Postman
的环境模型是 PostmanEnvironment
public struct PostmanEnvironment: Content {
public var name: String
public var values: [String: String]
}
初始环境值和当前环境值之间存在区别。 如果你共享环境,初始环境变量值会在工作区和团队之间同步。 当前环境变量值是在发出请求时实际使用的值。 在更改之前,它们采用初始值。 阅读更多关于环境变量的信息,请点击这里。
使用 PostmanClient
获取你的环境
postmanClient.getEnvironment().map { environment in
environment.name
environment.values
}
注意:这些值是*初始*环境变量值,而不是当前值。
客户端提供了更新初始环境变量值 (updateInitialEnvironment(...)
) 和当前环境变量值的方法,后者使用一种稍后讨论的变通方法 (updateCurrentEnvironment(...)
)。 可以使用两种不同的策略更新环境:
- 通过完全替换环境 (
update*Environment(byReplacingWith:
)
- 通过将新环境中的值合并到现有环境中,并在遇到重复键时使用合并策略 (
update*Environment(byMergingWith:strategy:)
)。
你可以通过以下方式更新环境的初始环境变量值:
let updatedEnvironment = PostmanEnvironment(
name: "Updated Name",
values: ["token": updatedToken, "testUserID": newTestUserID]
)
// ... Replacing the entire environment.
postmanClient.updateInitialEnvironment(byReplacingWith: updatedEnvironment)
// ... Or by merging a new environment into the existing environment.
postmanClient.updateInitialEnvironment(byMergingWith: updatedEnvironment, strategy: .useNewValueForDuplicateKeys)
存在相同的调用来更新你的环境的当前环境变量值。
重要的是要注意,当你通过替换来更新环境时,整个环境将被替换。 因此,如果现有环境变量未包含在 values
中,它将被删除。
存在三种不同的合并策略来确定在合并的两个环境之间找到重复键时应使用哪个值。
策略 |
描述 |
keepCurrentValueForDuplicateKeys |
保留当前值。 |
useNewValueForDuplicateKeys |
使用新值。 |
closure((String, String) -> String) |
使用一个闭包,它接受两个字符串,分别是当前值和新值,并返回要用作该值的字符串。 |
Postman API 只允许你更新初始环境变量值。 因此,如果你使用 API 更新现有环境,你发出的请求将具有旧的“当前”值。 但是,由于当前值在首次创建时采用初始值,因此,如果你删除所有环境变量,然后重新创建它们,初始值和当前值将彼此同步。 因此,updateCurrentEnvironment
变体正是这样做的:它们创建环境及其变量的副本,删除变量,然后重新创建它们。 有点 hack,但它有效! 也就是说,由于环境正在被擦除和重新创建,请确保你拥有环境的备份,以防出现任何问题。
如果对 API 的请求失败,将抛出一个 PostmanError
,其中包含一个 name
和 message
来帮助你了解哪里出错了。
postmanClient.update(updatedEnvironment).catch { error in
if let postmanError = error as? PostmanError {
postmanError.name
postmanError.message
}
}