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-sydetc. - 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 |
{ |
STRING | JSON | JSON object |
{"firefox":{"name":"Firefox","pref_url":"about:config"}} |
homens: |
STRING | YAML | string |
`"men:
|
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.