@ dynatrace/ openfeture- 提供者- 网络
官方Dynatrace OpenFeature提供网络服务.
问题、评论或建议? 联系 cobi.druxerman (英语)。 。 。 .
安装
npm install @dynatrace/openfeature-provider-web @openfeature/web-sdk
# yarn requires manual installation of peer-dependencies
yarn add @dynatrace/openfeature-provider-web @openfeature/web-sdk @openfeature/core
配置
提供者以 SDK 键构建为第一个参数和可选 覆盖为第二个 :
new DynatraceProvider(sdkKey, options?);
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
apiOrigin | string | 来源于密钥 | 取代OFREP API来源. 省略时,取自 geo sDK 键的部分. |
metricsOrigin | string | 来源于密钥 | 覆盖度量衡源(cheme, host,可选端口;没有路径). 提供者附件 /v1/metrics。省略时,取自 SDK 密钥地理学. |
pollInterval | number | -1 (残疾) | 更新旗帜的提供者的民调频率。 设定为 -1 或省略仅依赖上下文变化回溯。 可设定的最低投票间隔为1000ms. |
flushIntervalMs | number | 30_000 | 累积的评价衡量标准如何经常被冲出。 0到999之间的值被夹到1000毫秒. 传递负数以禁用定期冲出 . |
maxCapacity | number | 5_000 | 在启动容量冲出之前, 最大次数的单独集合图条目 . |
SDK键(例如. dt01.web_us_…)作为第一个构建者论据。 区域部分确定OFREP和度量衡终点;完整的密钥作为 Authorization 头曰.
使用量
基本设置
import { OpenFeature } from '@openfeature/web-sdk';
import { DynatraceProvider } from '@dynatrace/openfeature-provider-web';
const provider = new DynatraceProvider('dt01.web_us_…');
// Set evaluation context before registering the provider so the initial
// bulk evaluation includes targeting information.
await OpenFeature.setContext({ targetingKey: 'user-abc' });
// Wait until the provider has fetched all flags before evaluating.
await OpenFeature.setProviderAndWait(provider);
const client = OpenFeature.getClient();
const showBanner = client.getBooleanValue('show-banner', false);
背景变化
通话 OpenFeature.setContext() 在提供者自动登记后
启动新背景的新批量评价。 已更改的旗下密钥为
穿过 PROVIDER_CONFIGURATION_CHANGED 活动.
// Re-evaluates all flags for the new user context.
await OpenFeature.setContext({ targetingKey: 'user-xyz', plan: 'enterprise' });
定期投票
传出 a pollInterval (以毫秒计)让提供者重挂标记
除了改变上下文的触发器之外,还有定时器.
const provider = new DynatraceProvider('dt01.web_us_…', {
pollInterval: 60_000, // refresh every 60 seconds
});
正在收听标记更改
import { OpenFeature, ProviderEvents } from '@openfeature/web-sdk';
OpenFeature.addHandler(ProviderEvents.ConfigurationChanged, (event) => {
console.log('Flags changed:', event?.flagsChanged);
// Re-render components that depend on changed flags.
});