Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

評価理由とエラーコード

最終更新 Markdown で表示Agent セットアップ

binding の *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}`);
}

役に立ちましたか?