Node.js SDK統合ガイド nodejs-sdk-integration-guide

Experience Rollouts Node.js SDKは、Node.js サービス用のサーバーサイドライブラリです。 機能フラグデータをローカルにキャッシュし、あらゆるリクエストで同期API呼び出しなしでフラグを評価します。

NOTE
Node.js SDKは、サーバーサイドでのみ使用できるように設計されています。 クライアントサイド web アプリケーションの場合は、web SDKを使用します。 Web SDKのドキュメントは現在準備中であり、近日中に公開される予定です。

前提条件 prerequisites

Node.js SDKを統合する前に、次のことを確認してください。

  • Node.js サーバーサイドアプリケーション
  • Adobe Developer Consoleを通じて取得した​ API キー ​および​サービストークン — Experience Rollouts サポートに連絡して、クライアント IDを許可リストに加えるしてください
  • Experience Rollouts コンソールに登録されている​ アプリケーションクライアント ID ​は、​ アプリケーションのオンボーディング ​を参照してください。

SDK のインストール install

プロジェクトのpackage.jsonにSDKを追加します。

"@floodgate/fg-client-sdk": "~1.0.10"

次に、コードに必要なコードを入力します。

const { floodgateClient } = require('@floodgate/fg-client-sdk');

SDKの初期化 initialize

アプリケーションの起動時にcreateInstance()を1回呼び出します:

floodgateClient.createInstance(
  {
    adobeIoApiKey: "<YOUR_API_KEY>",
    clientIds: ["<CLIENT_ID_1>", "<CLIENT_ID_2>"],
    env: "PRD",    // Use "STG" for Stage
    featureRequestHttpParams: {
      timeout: 60 * 1000  // Optional: request timeout in ms
    },
    ingestAnalyticsHttpParams: {
      timeout: 5 * 1000   // Optional: analytics timeout in ms
    }
  },
  function(cb) {
    // Fetch a fresh service token from IMS and pass it in the callback
    cb(null, SERVICE_TOKEN);
  },
  function() {
    return true;  // Return false to disable analytics
  },
  function(response) {
    // Called when the SDK initializes successfully
    console.log("SDK initialized");
  },
  function(err) {
    // Called if initialization fails
    console.error("SDK init error:", err);
  }
);

機能フラグの取得 retrieve-features

機能フラグは、コールバックで非同期的に返されます。 ユーザーコンテキストに基づいて適切な方法を選択します。

認証済みユーザー authenticated-user

floodgateClient.getFeatures(
  {
    userAccessToken: "<USER_ACCESS_TOKEN>",
    visitorId: "<VISITOR_ID>",
    clientId1: "<CLIENT_ID>",
    meta: true
  },
  function(err, features) {
    if (err) {
      // Handle error and serve default experience
      return;
    }
    const isEnabled = floodgateClient.isFeatureEnabled(features, "MY_FEATURE_FLAG");
    // Serve experience based on isEnabled
  }
);

匿名ユーザー anonymous-user

ユーザーアクセストークンが使用できない場合は、リリースフラグを使用するか、トークンを省略してフルロールアウトリリースを受け取ります。

floodgateClient.getFeatures(
  {
    releaseFlag: "<RELEASE_FLAG>",
    visitorId: "<VISITOR_ID>",
    clientId1: "<CLIENT_ID>",
    meta: false
  },
  callback
);

デフォルトのフルロールアウトリリース default-releases

アクセストークンもリリースフラグも指定されていない場合、SDKは​ フルロールアウト ​または​ ベースライン ​状態で機能を返します。

floodgateClient.getFeatures(
  {
    clientId1: "<CLIENT_ID>",
    visitorId: "<VISITOR_ID>",
    meta: false
  },
  callback
);

機能が有効になっているかどうかを確認する check-feature

const isEnabled = floodgateClient.isFeatureEnabled(features, "MY_FEATURE_FLAG");

if (isEnabled) {
  // Serve the new experience
} else {
  // Serve the default experience
}

デバッグログを有効にする debug-logging

詳細なSDK ログを有効にするには、createInstance()の呼び出し時にデバッグレベルのロガーインスタンスを渡します。

const bunyan = require('bunyan');
const logger = bunyan.createLogger({ name: "fg", sourceType: "SDK", level: "debug" });

floodgateClient.createInstance(
  { ..., log: logger },
  ...
);

関連トピック see-also

recommendation-more-help
430243c1-83e8-4367-b1cf-b852fc7f1cbf