跳转到内容
搜索文档

评估原因和错误代码

最后更新 查看 MarkdownAgent 设置

当您使用绑定的 *Details 方法或 OpenFeature SDK 评估标志时,响应将包含一个 reason 字段,用于解释返回特定值的原因。如果发生错误,响应将包含一个 errorCode 字段。

评估原因

原因 描述
TARGETING_MATCH 目标定位规则的条件与评估上下文匹配,并返回了该规则的变体。
SPLIT 具有百分比推出的目标定位规则匹配。用户在推出百分比内,并接收了该规则的变体。
DEFAULT 没有任何目标定位规则与评估上下文匹配。返回了该标志的默认变体。
DISABLED 该标志已禁用。无论是否有目标定位规则,都返回了默认变体。
CACHED SDK 返回了缓存的评估结果。
ERROR 评估失败,并返回了默认值。

错误代码

当发生评估错误时,方法将返回您提供的默认值。*Details 方法包含有关错误的附加元数据。

错误代码 描述
TYPE_MISMATCH 标志的变体类型与请求的类型不匹配。例如,在变体为字符串的标志上调用 getBooleanValue。返回默认值。
FLAG_NOT_FOUND 应用中不存在指定的标志键。返回默认值。
INVALID_CONTEXT 评估上下文包含不受支持的值,例如在 HTTP 评估中的对象或数组。返回默认值。
PARSE_ERROR SDK 收到了无效的评估响应。返回默认值。
GENERAL 评估期间发生了意外错误,例如超时或网络故障。返回默认值。

示例

以下示例检查了 getBooleanDetails 返回的评估详细信息:

const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
	userId: "user-42",
});

switch (details.reason) {
	case "TARGETING_MATCH":
		console.log(`Matched targeting rule, variant: ${details.variant}`);
		break;
	case "SPLIT":
		console.log(`Included in rollout, variant: ${details.variant}`);
		break;
	case "DEFAULT":
		console.log("No rule matched, using default variant");
		break;
	case "DISABLED":
		console.log("Flag is disabled");
		break;
}

if (details.errorCode) {
	console.error(`Evaluation error: ${details.errorCode}`);
}
const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
	userId: "user-42",
});

switch (details.reason) {
	case "TARGETING_MATCH":
		console.log(`Matched targeting rule, variant: ${details.variant}`);
		break;
	case "SPLIT":
		console.log(`Included in rollout, variant: ${details.variant}`);
		break;
	case "DEFAULT":
		console.log("No rule matched, using default variant");
		break;
	case "DISABLED":
		console.log("Flag is disabled");
		break;
}

if (details.errorCode) {
	console.error(`Evaluation error: ${details.errorCode}`);
}

这篇文档对您有帮助吗?