在 Paw 中使用环境变量创建请求

Creating request with Environment Variables in Paw

在 Paw 应用程序中,如果我们手动创建请求,我们可以调用上下文菜单并选择一个环境变量。

在这种情况下,URL 看起来像这样:

如果我更改环境或变量本身,它会更新。

我正在尝试改进现有插件(API Blueprint Importer),但我只是想出了如何从环境变量中读取。
我只能做这样的事情:
httplocalhost8000 是从环境变量中读取的。

尝试实现第一张图片中的效果,但无济于事。
Paw App 中是否有 API 可用,或者目前不可用?

动态创建对环境变量的引用在Paw中是绝对可行的。首先,您需要创建环境变量,然后创建一个引用它的动态值。

动态设置环境域

由于环境变量存储在域中,在应用程序中也称为组,您应该首先使用 context.getEnvironmentDomainByNamecontext.createEnvironmentDomain 创建一个具有所需名称的环境域。您可以在 the documentation page for the context object.

上阅读有关这两种方法的更多信息
getOrCreateEnvironmentDomain(name) {
    let env = this.context.getEnvironmentDomainByName(name)
    if (typeof env === 'undefined') {
        env = context.createEnvironmentDomain(name)
    }
    return env
}

创建环境域后,您需要添加一个环境来存储变量。该过程与创建环境域非常相似。您可以在此处找到有关所用方法的更多信息 on the documentation page for the EnvironmentDomain.

getOrCreateEnvironment(domain, name) {
    let env = domain.getEnvironmentByName(name)
    if (typeof env === 'undefined') {
        env = domain.createEnvironment(name)
    }
    return env
}

下一步是创建变量,如果它不存在,或者 return 如果它存在。

/* 
    uses:
        @getOrCreateEnvironmentDomain
        @getOrCreateEnvironment
*/
updateOrCreateEnvironmentVariable(domainName, envName, name, value) {
    let domain = this.getOrCreateEnvironmentDomain(domainName)
    let env = this.getOrCreateEnvironment(domain, envName)
    let varDict = {}

    varDict[name] = typeof value !== 'undefined' ? value: ''
    env.setVariablesValues(varDict)
    return domain.getVariableByName(name)
}

设置引用

要创建对环境变量的引用,您需要创建一个环境变量动态值。它的标识符是com.luckymarmot.EnvironmentVariableDynamicValue,它只接受一个参数environmentVariable,即它所引用的变量的id。

...
let envVariable = this.updateOrCreateEnvironmentVariable('Server', 'api-blueprint', 'protocol', 'https')
let dv = new DynamicValue(
    'com.luckymarmot.EnvironmentVariableDynamicValue',
    {
        environmentVariable: envVariable.id
    }
)
/* use the Dynamic Value like any other */
...