App Configuration SDK client React

Pour renforcer la sécurité de vos applications utilisant le " ibm-appconfiguration-react-client-sdk, il est fortement recommandé d'utiliser une clé APIK cryptée au lieu de la clé APIK ordinaire dans la méthode init. Cette modification est essentielle pour éviter l'exposition d'informations d'identification sensibles lorsque les utilisateurs inspectent votre application web. Si vous utilisez déjà une APIKey ordinaire, veuillez mettre à jour votre application afin de générer et d'utiliser l'APIKey cryptée en suivant les étapes mentionnées ici.

Présentation

IBM Cloud App Configuration React Client SDK est utilisé pour effectuer l'évaluation des indicateurs de fonctionnalités et des propriétés dans les applications web et suivre les métriques personnalisées pour l'expérimentation en fonction de la configuration sur IBM Cloud {{site {{site.data.keyword.appconfig_short}}

IBM Cloud App Configuration est un service centralisé de gestion et de configuration des fonctionnalités sur IBM Cloud pour les applications web et mobiles, les microservices et les environnements distribués distribués.

Instrumentez vos applications web avec App Configuration React Client SDK, et utilisez le tableau de bord App Configuration, le CLI ou l'API pour définir des drapeaux ou des propriétés de fonctionnalités, organisés en collections et ciblés sur des segments. Basculez les états des indicateurs de fonctionnalités dans le nuage pour activer ou désactiver les fonctionnalités dans votre application ou votre environnement, le cas échéant. Réalisez des expériences et mesurez l'effet des drapeaux sur les utilisateurs finaux en suivant des paramètres personnalisés. Vous pouvez également gérer les propriétés des applications réparties de manière centralisée.

Compatibilité : Le SDK est compatible avec la version 16.8.0 de React et les versions ultérieures. Ce SDK s'appuie sur App Configuration JavaScript Client SDK afin de fournir une meilleure intégration pour une utilisation dans les applications React. Par conséquent, une grande partie des fonctionnalités du App Configuration Du SDK client JavaScript est également disponible pour le SDK client React. En savoir plus sur App Configuration JavaScript Client SDK à partir d'ici.

Intégration du SDK client pour React

Installation

Installez le kit de développement de logiciels (SDK).

npm install ibm-appconfiguration-react-client-sdk

Initialisation du logiciel SDK

Initialisez le SDK pour vous connecter à votre instance de service d' App Configuration, comme indiqué dans l'exemple suivant. L'encapsulage de votre composant d'application avec AppConfigProvider vous permet d'accéder aux fonctions et aux propriétés à partir de n'importe quel niveau de votre hiérarchie de composants.

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')
  );
})();
  • région : Nom de la région où l'instance de service App Configuration est créée. Voir la liste des lieux pris en charge ici. Par exemple : us-south, au-syd etc.
  • guid : Instance Id du service App Configuration. Vous pouvez l'obtenir dans la section "Service credentials" du tableau de bord App Configuration.
  • apikey : La clé APIK cryptée générée comme décrit ici.
  • collectionId: Id de la collection créée dans l'instance de service App Configuration dans la section Collections.
  • environmentId: Id de l'environnement créé dans l'instance de service App Configuration dans la section Environnements.

Utilisez toujours la clé APIK cryptée pour éviter d'exposer des informations sensibles.
Veillez à créer les informations d'identification du service avec le rôle " Client SDK, car il dispose des autorisations d'accès minimales adaptées à une utilisation dans des applications basées sur un navigateur.

Exemples d'utilisation des API liées aux fonctions et aux propriétés

Consultez les exemples suivants pour utiliser les API liées aux fonctions.

Extraction d'une fonctionnalité

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

Extraction de toutes les fonctionnalités

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

Evaluation d'une fonction

Vous pouvez utiliser la méthode feature.getCurrentValue(entityId, entityAttributes) pour évaluer la valeur de l'indicateur de fonctionnalité. Cette méthode renvoie l'une des valeurs Activé / Désactivé / Remplace en fonction de l'évaluation. Le type de données de la valeur renvoyée correspond à celui de l'indicateur de fonction. Transmettez un entityId unique en tant que paramètre pour effectuer l'évaluation de l'indicateur de fonction.

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

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

Où :

  • entityId: ID de l'entité. Il s'agit d'un identificateur de chaîne lié à l'entité par rapport à laquelle la fonction est évaluée. Par exemple, une entité peut être une instance d'une application qui s'exécute sur un appareil mobile, ou un utilisateur qui accède à l'application web. Pour qu'une entité interagisse avec App Configuration, elle doit fournir un ID d'entité unique.
  • entityAttributes: objet JSON composé du nom d'attribut et de ses valeurs qui définit l'entité spécifiée. Il s'agit d'un paramètre facultatif si l'indicateur de fonction n'est pas configuré avec une définition de ciblage. Si le ciblage est configuré, entityAttributes doit être fourni pour l'évaluation de la règle. Un attribut est un paramètre utilisé pour définir un segment. Le SDK utilise les valeurs d'attribut pour déterminer si l'entité spécifiée satisfait aux règles de ciblage et renvoie la valeur d'indicateur de fonction appropriée.

Envoyer des mesures personnalisées

Enregistrez des mesures personnalisées à l'aide de l'option " useTrack dans le cadre de l'expérimentation.

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

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

Extraction d'une propriété

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

Extraction de toutes les propriétés

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

Evaluer une propriété

Utilisez la méthode property.getCurrentValue(entityId, entityAttributes) pour évaluer la valeur du bien. Cette méthode renvoie la valeur de propriété par défaut ou sa valeur remplacée en fonction de l'évaluation. Le type de données de la valeur renvoyée correspond à celui de la propriété.

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

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

Où :

  • entityId: ID de l'entité. Il s'agit d'un identificateur de chaîne lié à l'entité par rapport à laquelle la propriété est évaluée. Pour qu'une entité interagisse avec App Configuration, elle doit fournir un ID d'entité unique.
  • entityAttributes: objet JSON composé du nom d'attribut et de ses valeurs qui définit l'entité spécifiée. Il s'agit d'un paramètre facultatif si la propriété n'est configurée avec aucune définition de ciblage. Si le ciblage est configuré, entityAttributes doit être fourni pour l'évaluation de la règle. Un attribut est un paramètre utilisé pour définir un segment. Le SDK utilise les valeurs d'attribut pour déterminer si l'entité spécifiée satisfait aux règles de ciblage et renvoie la valeur de propriété appropriée.

Utiliser des valeurs de repli avec le SDK React Client

En cas d'erreur de connexion avec le App Configuration, le SDK s'appuie sur les valeurs d'indicateur les plus récentes conservées en mémoire. Toutefois, si aucune valeur antérieure n'existe en mémoire, il est conseillé aux utilisateurs d'établir des valeurs de repli dans leur code, afin de garantir un fonctionnement sans heurts. L'exemple suivant illustre cette approche de repli.


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> : '';
}

Types de données pris en charge

App Configuration permet de configurer l'indicateur de caractéristique et les propriétés dans les types de données suivants : Booléen, Numérique, chaîne de caractères. Le type de données Chaîne peut être le format d'une chaîne de texte, JSON ou YAML. Le SDK traite chaque format en conséquence, comme indiqué dans le tableau suivant.

Voir la table
Valeur de la fonction ou de la propriété DataType DataFormat Type de données renvoyées
par getCurrentValue()
Exemple de sortie
true BOOLEAN non applicable boolean true
25 NUMERIQUE non applicable number 25
" Un texte de chaîne " CHAÎNE TEXTE string a string text
{
"firefox": {
"name": "Firefox",
"pref_url": "about:config"
}
}
CHAÎNE JSON JSON object {"firefox":{"name":"Firefox","pref_url":"about:config"}}
Hommes :
- John Smith
- Bill Jones
femmes :
- Mary Smith
- Susan Williams
CHAÎNE YAML string

`"men:

  • John Smith
  • Bill Jones
    women:
  • Mary Smith
  • Susan Williams"`
Utilisation de l'indicateur de fonctionnalité Exemple
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)
Exemple d'utilisation de propriété
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)

Licence

Ce projet est publié sous la licence Apache 2.0 Le texte intégral de la licence se trouve dans LICENCE

Ecoute des modifications apportées aux fonctionnalités et aux propriétés

Le SDK s'abonne automatiquement au mécanisme basé sur les événements et réaffiche les composants inclus lorsque la configuration de l'indicateur de fonction ou de la propriété est modifiée.