App Configuration React-Client-SDK

Um die Sicherheit Ihrer Anwendungen, die den " ibm-appconfiguration-react-client-sdk verwenden, zu erhöhen, wird dringend empfohlen, einen verschlüsselten APIKey anstelle des einfachen APIKey in der init-Methode zu verwenden. Diese Änderung ist wichtig, um zu verhindern, dass vertrauliche Anmeldeinformationen preisgegeben werden, wenn Benutzer Ihre Webanwendung inspizieren. Wenn Sie bereits einen einfachen APIKey verwenden, aktualisieren Sie bitte Ihre Anwendung, um den verschlüsselten APIKey zu generieren und zu verwenden, wie in den hier genannten Schritten beschrieben.

Übersicht

IBM Cloud App Configuration React Client SDK wird verwendet, um Feature-Flags und Eigenschaftsauswertungen in Webanwendungen durchzuführen und benutzerdefinierte Metriken für Experimente zu verfolgen, die auf der Konfiguration des IBM Cloud App Configuration Dienst.

IBM Cloud App Configuration ist ein zentraler Dienst zur Verwaltung und Konfiguration von Funktionen auf IBM Cloud für den Einsatz mit Web- und mobilen Anwendungen, Microservices und verteilten umgebungen.

Instrumentieren Sie Ihre Webanwendungen mit App Configuration React Client SDK, und verwenden Sie das App Configuration Dashboard, CLI oder API, um Feature-Flags oder Eigenschaften zu definieren, die in Sammlungen organisiert und auf Segmente ausgerichtet sind. Schalten Sie den Status von Funktionskennzeichen in der Cloud um, um Funktionen in Ihrer Anwendung oder Umgebung bei Bedarf zu aktivieren oder zu deaktivieren. Führen Sie Experimente durch und messen Sie die Auswirkungen von Funktionskennzeichen auf die Endbenutzer, indem Sie benutzerdefinierte Metriken verfolgen. Sie können die Eigenschaften für verteilte Anwendungen auch zentral verwalten.

Kompatibilität: Das SDK ist kompatibel mit React Version 16.8.0 und höher. Dieses SDK baut auf App Configuration JavaScript Client SDK auf, um eine bessere Integration für die Verwendung in React-Anwendungen zu ermöglichen. Infolgedessen ist ein Großteil der App Configuration JavaScript Client SDK-Funktionalität auch für das React Client SDK zur Verfügung steht. Lesen Sie mehr über App Configuration JavaScript Client SDK erfahren Sie hier.

Client SDK für React integrieren

Installation

Installieren Sie das SDK.

npm install ibm-appconfiguration-react-client-sdk

SDK initialisieren

Initialisieren Sie das SDK, um eine Verbindung mit Ihrer App Configuration-Dienstinstanz herzustellen, wie im folgenden Beispiel gezeigt. Durch das Wrapping Ihrer App-Komponente mit AppConfigProvider können Sie von einer beliebigen Ebene Ihrer Komponentenhierarchie aus auf Features und Eigenschaften zugreifen.

import { withAppConfigProvider } from 'ibm-appconfiguration-react-client-sdk';

(async () => {
  const AppConfigProvider = await withAppConfigProvider({
    region: 'us-south',
    guid: '<guid>',
    apikey: '<encrypted_apikey>',
    collectionId: 'airlines-webapp',
    environmentId: 'dev'
  })

  ReactDOM.render(
    <AppConfigProvider>
        <YourApp />
    </AppConfigProvider>,
    document.getElementById('root')
  );
})();
  • region : Name der Region, in der die App Configuration Dienstinstanz erstellt wird. Eine Liste der unterstützten Standorte finden Sie hier. Zum Beispiel: us-south, au-syd usw.
  • guid : Instanz-ID des Dienstes App Configuration. Diese erhalten Sie im Abschnitt "Dienstanmeldeinformationen" des Dashboards App Configuration.
  • apikey : Der verschlüsselte APIKey, der wie hier beschrieben erzeugt wurde.
  • collectionId: Id der Sammlung, die in der Dienstinstanz App Configuration unter dem Abschnitt Sammlungen erstellt wurde.
  • environmentId: Id der Umgebung, die in der Serviceinstanz App Configuration unter dem Abschnitt Umgebungen erstellt wurde.

Verwenden Sie immer den verschlüsselten APIKey, um die Preisgabe sensibler Informationen zu vermeiden.
Stellen Sie sicher, dass Sie die Dienstanmeldeinformationen mit der Rolle " Client SDK erstellen, da diese die minimalen Zugriffsberechtigungen hat, die für die Verwendung in browserbasierten Anwendungen geeignet sind.

Beispiele für die Verwendung von Funktionen und eigenschaftsbezogenen APIs

Sehen Sie sich die folgenden Beispiele für die Verwendung der funktionsbezogenen APIs an.

Einzelnes Feature abrufen

import { useFeature } from 'ibm-appconfiguration-react-client-sdk';

const feature = useFeature('featureId'); // returns undefined incase the featureId is invalid or doesn't exist

if (feature !== undefined) {
  console.log(`Feature Name ${feature.getFeatureName()} `);
  console.log(`Feature Id ${feature.getFeatureId()} `);
  console.log(`Feature Type ${feature.getFeatureDataType()} `);
  console.log(`Is feature enabled? ${feature.isEnabled()} `);
}

Alle Features abrufen

import { useFeatures } from 'ibm-appconfiguration-react-client-sdk';

const features = useFeatures();
const feature = features['featureId'];

if (feature !== undefined) {
  console.log(`Feature Name ${feature.getFeatureName()} `);
  console.log(`Feature Id ${feature.getFeatureId()} `);
  console.log(`Feature Type ${feature.getFeatureDataType()} `);
  console.log(`Is feature enabled? ${feature.isEnabled()} `);
}

Feature bewerten

Sie können die Methode feature.getCurrentValue(entityId, entityAttributes) verwenden, um den Wert des Feature-Flags zu bewerten. Diese Methode gibt basierend auf der Auswertung einen der Werte "Aktiviert/Inaktiviert/Überschrieben" zurück. Der Datentyp des zurückgegebenen Werts stimmt mit dem des Feature-Flags überein. Übergeben Sie eine eindeutige entityId als Parameter, um die Feature-Flag-Auswertung durchzuführen.

const entityId = 'john_doe';
const entityAttributes = {
  city: 'Bangalore',
  country: 'India',
};

const feature = useFeature('featureId');
const featureValue = feature.getCurrentValue(entityId, entityAttributes);

Dabei gilt:

  • entityId: ID der Entität. Dies ist eine Zeichenfolgekennung, die sich auf die Entität bezieht, für die das Feature ausgewertet wird. Eine Entität kann zum Beispiel eine Instanz einer Anwendung sein, die auf einem mobilen Gerät läuft, oder ein Benutzer, der auf die Webanwendung zugreift. Damit eine Entität mit App Configuration interagieren kann, muss sie eine eindeutige Entitäts-ID angeben
  • entityAttributes: Ein JSON-Objekt, das aus dem Attributnamen und ihren Werten besteht, die die angegebene Entität definieren. Dies ist ein optionaler Parameter, wenn das Feature-Flag nicht mit einer Zieldefinition konfiguriert ist. Wenn das Ziel konfiguriert ist, muss entityAttributes für die Regelauswertung angegeben werden. Ein Attribut ist ein Parameter, der zum Definieren eines Segments verwendet wird. Das SDK verwendet die Attributwerte, um festzustellen, ob die angegebene Entität die Zielregeln erfüllt, und gibt den entsprechenden Feature-Flag-Wert zurück.

Benutzerdefinierte Metriken senden

Erfassen Sie benutzerdefinierte Metriken mit dem ' useTrack in der Experimentierphase.

import { useTrack } from 'ibm-appconfiguration-react-client-sdk';

export default MyComponent = function () {
    const trackEvent = useTrack();
    return (
        <button onClick={() => trackEvent('clicked', 'user123')}>Buy</button>
    )
}

Einzeleigenschaft abrufen

import { useProperty } from 'ibm-appconfiguration-react-client-sdk';

const property = useProperty('propertyId'); // returns undefined incase the propertyId is invalid or doesn't exist

if (property !== undefined) {
  console.log(`Property Name ${property.getPropertyName()} `);
  console.log(`Property Id ${property.getPropertyId()} `);
  console.log(`Property Type ${property.getPropertyDataType()} `);
}

Alle Eigenschaften abrufen

import { useProperties } from 'ibm-appconfiguration-react-client-sdk';

const properties = useProperties();
const property = properties['propertyId'];

if (property !== undefined) {
  console.log(`Property Name ${property.getPropertyName()} `);
  console.log(`Property Id ${property.getPropertyId()} `);
  console.log(`Property Type ${property.getPropertyDataType()} `);
}

Eigenschaft auswerten

Verwenden Sie die Methode property.getCurrentValue(entityId, entityAttributes), um den Wert der Immobilie zu ermitteln. Diese Methode gibt den Standardeigenschaftswert oder den überschriebenen Wert basierend auf der Auswertung zurück. Der Datentyp des zurückgegebenen Werts entspricht dem des Merkmals.

const entityId = 'john_doe';
const entityAttributes = {
  city: 'Bangalore',
  country: 'India',
};

const property = useProperty('propertyId');
const propertyValue = property.getCurrentValue(entityId, entityAttributes);

Dabei gilt:

  • entityId: ID der Entität. Dies ist eine Zeichenfolgekennung, die sich auf die Entität bezieht, für die die Eigenschaft ausgewertet wird. Damit eine Entität mit App Configuration interagieren kann, muss sie eine eindeutige Entitäts-ID angeben
  • entityAttributes: Ein JSON-Objekt, das aus dem Attributnamen und ihren Werten besteht, die die angegebene Entität definieren. Dies ist ein optionaler Parameter, wenn die Eigenschaft nicht mit einer Zieldefinition konfiguriert ist. Wenn das Ziel konfiguriert ist, muss entityAttributes für die Regelauswertung angegeben werden. Ein Attribut ist ein Parameter, der zum Definieren eines Segments verwendet wird. Das SDK verwendet die Attributwerte, um zu bestimmen, ob die angegebene Entität die Zielregeln erfüllt, und gibt den entsprechenden Eigenschaftswert zurück.

Verwendung von Fallback-Werten mit dem React Client SDK

Im Falle eines Verbindungsfehlers mit dem App Configuration, verlässt sich das SDK auf die zuletzt bewerteten Flag-Werte, die im Speicher gehalten werden. Wenn jedoch keine vorherigen Werte im Speicher vorhanden sind, ist es ratsam, dass die Benutzer in ihrem Code Ausweichwerte festlegen, um einen reibungslosen Betrieb zu gewährleisten. Ein Beispiel für diesen Ausweichansatz ist im folgenden Beispiel dargestellt.


import { useFeatures } from 'ibm-appconfiguration-react-client-sdk';

export default function App {
  const features = useFeatures();
  const defaultFlagValues = {
    'flight-booking': false
  }
  const entityId = 'john_doe';
  const entityAttributes = {
    city: 'Bangalore',
    country: 'India',
  };

  const getAppConfigurationFlags = (featureID, features) => {
    if (Object.keys(features).length === 0 && features.constructor === Object) {
      return defaultFlagValues[featureID];
    }

    return feature[featureID]
      ? feature[featureID].getCurrentValue(entityId, entityAttributes)
      : defaultFlagValues[featureID];
  };

  return getAppConfigurationFlags('flight-booking', features) ? <div>Flight Booking</div> : '';
}

Unterstützte Datentypen

App Configuration dienst ermöglicht die Konfiguration der Merkmalskennzeichen und Eigenschaften in den folgenden Datentypen: Boolesch, Numerisch, String. Der Zeichenfolgedatentyp kann das Format einer Textzeichenfolge, JSON oder YAML haben. Das SDK verarbeitet jedes format entsprechend, wie in der folgenden Tabelle dargestellt.

Tabelle anzeigen
Feature oder Eigenschaftswert DataType DataFormat Typ der Daten, die
von getCurrentValue() zurückgegeben werden
Beispielausgabe
true BOOLESCHE nicht zutreffend boolean true
25 NUMERISCH nicht zutreffend number 25
„ein Zeichenfolgetext“ ZEICHENFOLGE TEXT string a string text
{
„Firefox“: {
„name“: „Firefox“,
„pref_url“: „about:config“
}
}
ZEICHENFOLGE JSON JSON object {"firefox":{"name":"Firefox","pref_url":"about:config"}}
Männer:
– John Smith
– Bill Jones
Frauen:
– Mary Smith
– Susan Williams
ZEICHENFOLGE YAML string

`"men:

  • John Smith
  • Bill Jones
    women:
  • Mary Smith
  • Susan Williams"`
Verwendung des Merkmals Beispiel
const feature = useFeature('json-feature');
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // JSON

// Example (traversing the returned JSON)
let result = feature.getCurrentValue(entityId, entityAttributes);
console.log(result.key) // prints the value of the key

const feature = useFeature('yaml-feature');
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // YAML
feature.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check above table)
Verwendungsbeispiel für Eigenschaften
const property = useProperty('json-property');
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // JSON

// Example (traversing the returned JSON)
let result = property.getCurrentValue(entityId, entityAttributes);
console.log(result.key) // prints the value of the key

const property = useProperty('yaml-property');
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // YAML
property.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check above table)

Lizenz

Dieses Projekt wird unter der Apache 2.0 Lizenz veröffentlicht. Der vollständige Text der Lizenz ist zu finden unter LICENSE

Hören Sie sich die Änderungen des Merkmals oder der Eigenschaft an

Das SDK abonniert automatisch den ereignisbasierten Mechanismus und gibt die enthaltenen Komponenten erneut aus, wenn sich die Konfiguration des Feature-Flags oder der Eigenschaft ändert.