App Configuration SDK do cliente React

Para aumentar a segurança de seus aplicativos que usam o ' ibm-appconfiguration-react-client-sdk, é altamente recomendável usar uma APIKey criptografada em vez da APIKey simples no método init. Essa alteração é vital para evitar a exposição de credenciais confidenciais quando os usuários inspecionam seu aplicativo da Web. Se você já estiver usando uma APIKey simples, atualize seu aplicativo para gerar e usar a APIKey criptografada de acordo com as etapas mencionadas aqui.

Visão geral

IBM Cloud App Configuration O React Client SDK é usado para executar o sinalizador de recursos e a avaliação de propriedades em aplicativos Web e rastrear métricas personalizadas para experimentação com base na configuração em IBM Cloud serviço App Configuration.

IBM Cloud App Configuration é um serviço centralizado de gerenciamento e configuração de recursos em IBM Cloud para uso com aplicativos da Web e móveis, microsserviços e ambientes distribuídos e ambientes distribuídos.

Instrumente seus aplicativos da Web com o App Configuration React Client SDK e use o painel App Configuration, a CLI ou a API para definir sinalizadores ou propriedades de recursos, organizados em coleções e direcionados a segmentos. Alterne os estados do sinalizador de recursos na nuvem para ativar ou desativar recursos em seu aplicativo ou ambiente, quando necessário. Execute experimentos e meça o efeito dos sinalizadores de recursos nos usuários finais, rastreando métricas personalizadas. Também é possível gerenciar as propriedades para aplicativos distribuídos centralmente.

Compatibilidade: o SDK é compatível com o React versão 16.8.0 e superior. Este SDK se baseia no App Configuration JavaScript Client SDK para fornecer uma melhor integração para uso em aplicativos React. Como resultado, grande parte da funcionalidade do App Configuration A funcionalidade do SDK do cliente JavaScript também está disponível para o uso do SDK do cliente React. Leia mais sobre App Configuration JavaScript Client SDK aqui.

Integrando o SDK do cliente para React

Instalação

Instalar o SDK.

npm install ibm-appconfiguration-react-client-sdk

Inicializar o SDK

Inicialize o sdk para se conectar à sua instância de serviço App Configuration, conforme mostrado no exemplo a seguir. Agrupar seu componente de app com o AppConfigProvider permite acessar recursos e propriedades de qualquer nível de hierarquia de componente.

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 : Nome da região em que a instância do serviço App Configuration é criada. Veja a lista de locais com suporte aqui. Por exemplo: - us-south, au-syd etc.
  • guid : Id da instância do serviço App Configuration. Obtenha-a na seção de credenciais de serviço do painel App Configuration.
  • apikey : A APIKey criptografada gerada conforme descrito aqui.
  • collectionId: Id da coleção criada na instância de serviço App Configuration na seção Collections (Coleções ).
  • environmentId: Id do ambiente criado na instância de serviço App Configuration na seção Environments (Ambientes ).

Sempre use a APIKey criptografada para evitar a exposição de informações confidenciais.
Certifique-se de criar as credenciais de serviço com a função " Client SDK, pois ela tem as permissões de acesso mínimas adequadas para uso em aplicativos baseados em navegador.

Exemplos para uso de APIs relacionadas a recurso e propriedade

Consulte os exemplos a seguir para usar as APIs relacionadas ao recurso

Obter recurso único

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

Obter todos os recursos

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

Avaliar um recurso

É possível usar o método feature.getCurrentValue(entityId, entityAttributes) para avaliar o valor da sinalização do recurso. Este método retorna um valor Ativado / Desativado / Substituído com base na avaliação. O tipo de dados do valor retornado corresponde ao sinalizador do recurso. Passe um entityId exclusivo como o parâmetro para executar a avaliação do sinalizador de recurso.

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

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

Em que:

  • entityId: ID da Entidade. Será um identificador de sequência relacionado à Entidade com relação à qual o recurso é avaliado. Por exemplo, uma entidade pode ser uma instância de um aplicativo que é executado em um dispositivo móvel ou um usuário que acessa o aplicativo da Web. Para que qualquer entidade interaja com o App Configuration, ela deve fornecer um ID de entidade exclusivo.
  • entityAttributes: um objeto JSON que consiste no nome do atributo e seus valores que definem a entidade especificada. Este é um parâmetro opcional se o sinalizador de recurso não estiver configurado com nenhuma definição de destino Se o destino estiver configurado, então entityAttributes deverá ser fornecido para a avaliação de regra Um atributo é um parâmetro que é usado para definir um segmento. O SDK usa os valores de atributo para determinar se a entidade especificada satisfaz as regras de destino e retorna o valor da sinalização de recurso apropriado.

Enviar métricas personalizadas

Registre métricas personalizadas usando o gancho " useTrack na experimentação.

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

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

Obter propriedade única

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

Obter todas as propriedades

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

Avaliar uma propriedade

Use o método property.getCurrentValue(entityId, entityAttributes) para avaliar o valor da propriedade. Esse método retorna o valor da propriedade padrão ou seu valor substituído, com base na avaliação. O tipo de dados do valor retornado corresponde àquele da propriedade..

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

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

Em que:

  • entityId: ID da Entidade. Este será um identificador de sequência relacionado à Entidade na qual a propriedade é avaliada. Para que qualquer entidade interaja com o App Configuration, ela deve fornecer um ID de entidade exclusivo.
  • entityAttributes: um objeto JSON que consiste no nome do atributo e seus valores que definem a entidade especificada. Este é um parâmetro opcional se a propriedade não estiver configurada com nenhuma definição de destino Se o destino estiver configurado, então entityAttributes deverá ser fornecido para a avaliação de regra Um atributo é um parâmetro que é usado para definir um segmento. O SDK usa os valores de atributo para determinar se a entidade especificada satisfaz as regras de destino e retorna o valor da propriedade apropriado..

Usando valores de fallback com o React Client SDK

No caso de um erro de conexão com o App Configuration, o SDK se baseia nos valores de sinalizador avaliados mais recentemente e mantidos na memória. No entanto, se não houver valores anteriores na memória, é aconselhável que os usuários estabeleçam valores de fallback em seu código, garantindo uma operação tranquila. Um exemplo que mostra essa abordagem de fallback é fornecido pelo exemplo a seguir.


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

Tipos de dados suportados

App Configuration o serviço permite configurar o sinalizador e as propriedades do recurso nos seguintes tipos de dados: Booleano, Numérico, Cadeia de caracteres. O tipo de dados de sequência pode estar no formato de uma sequência de texto, JSON ou YAML. O SDK processa cada formato formato adequadamente, conforme mostrado na tabela a seguir.

Visualizar tabela
Valor do recurso ou propriedade DataType DataFormat Tipo de dados retornado
por getCurrentValue()
Saída de exemplo
true BOOLEAN não aplicável boolean true
25 NUMÉRICO não aplicável number 25
"um texto de sequência" STRING TEXT string a string text
{
"firefox": {
"name": "Firefox",
"pref_url": "about:config"
}
}
STRING JSON JSON object {"firefox":{"name":"Firefox","pref_url":"about:config"}}
homens:
-John Smith
-Bill Jones
mulheres:
-Mary Smith
-Susan Williams
STRING YAML string

`"men:

  • John Smith
  • Bill Jones
    women:
  • Mary Smith
  • Susan Williams"`
Exemplo de uso do sinalizador de recurso
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)
Exemplo de uso de propriedade:
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)

Licença

Este projeto é lançado sob a licença Apache 2.0. O texto completo da licença pode ser encontrado em LICENÇA

Atender às mudanças de recurso ou de propriedade

O SDK assina automaticamente o mecanismo baseado em eventos e renderiza novamente os componentes incluídos quando a configuração do sinalizador de recurso ou da propriedade muda.