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