The Swift Package Index logo.Swift Package Index (Swift 包索引)

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6 (准备好 Swift 6 了)?

When working with an Xcode project (当使用 Xcode 项目时)

When working with a Swift Package Manager manifest (当使用 Swift Package Manager 清单时)

Select a package version (选择一个包版本)

1.1.0

master


Postman Provider for Vapor (Vapor 的 Postman Provider)




Vapor Postman 提供器

Swift Vapor CircleCI MIT License

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"

使用 API

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(...))。 可以使用两种不同的策略更新环境:

  1. 通过完全替换环境 (update*Environment(byReplacingWith:)
  2. 通过将新环境中的值合并到现有环境中,并在遇到重复键时使用合并策略 (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,其中包含一个 namemessage 来帮助你了解哪里出错了。

postmanClient.update(updatedEnvironment).catch { error in
    if let postmanError = error as? PostmanError {
        postmanError.name
        postmanError.message
    }
}