Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os sinalizadores de recursos podem usar filtros de recursos para habilitar recursos condicionalmente. Para saber mais sobre filtros de recursos, consulte Habilitar recursos condicionais com filtros de recursos.
O exemplo usado neste guia é baseado na aplicação web Go Gin introduzida no guia de início rápido de gestão de funcionalidades. Antes de prosseguir, conclua o guia de início rápido para criar uma aplicação web Go Gin com um sinalizador de recurso Beta. Depois de concluído, você deve adicionar um filtro de recurso personalizado ao sinalizador de recurso Beta em sua loja de configuração de aplicativos.
Neste guia, você aprenderá a implementar um filtro de recursos personalizado e usar o filtro de recursos para habilitar recursos condicionalmente.
Prerequisites
- Crie um aplicativo Web Go Gin com um sinalizador de recurso.
- Adicionar um filtro de recurso personalizado ao sinalizador de recurso
Implementar um filtro de recurso personalizado
Você adicionou um filtro de recurso personalizado chamado Aleatório com um parâmetro Porcentagem para o sinalizador de recurso Beta nos pré-requisitos. Em seguida, você implementará o filtro de recursos para habilitar o sinalizador de recurso Beta com base na chance definida pelo parâmetro Percentagem .
Crie um
random_filter.goarquivo com o seguinte código:package main import ( "fmt" "math/rand" "time" "github.com/microsoft/Featuremanagement-Go/featuremanagement" ) type RandomFilter struct{} func (f *RandomFilter) Name() string { return "Random" } func (f *RandomFilter) Evaluate(evalCtx featuremanagement.FeatureFilterEvaluationContext, appCtx any) (bool, error) { percentage, ok := evalCtx.Parameters["Percentage"].(float64) if !ok { return false, fmt.Errorf("invalid parameter type for Percentage: expected float64, got %T", evalCtx.Parameters["Percentage"]) } rand.Seed(time.Now().UnixNano()) randomValue := rand.Intn(100) return randomValue <= int(percentage), nil }Você adicionou uma
RandomFilterstruct que implementa aFeatureFilterinterface dafeaturemanagementbiblioteca. AFeatureFilterinterface tem dois métodos:-
Name()retorna o nome do filtro Random, que corresponde ao nome do filtro definido no sinalizador de recurso Beta na Configuração do Aplicativo do Azure. -
Evaluate()é chamado sempre que um flag de funcionalidade é avaliado. Um filtro de recursos habilita um sinalizador de recurso retornandotrue.
-
Atualize seu
main.goarquivo para registrar oRandomFilterao criar o gerenciador de recursos:// ...existing code... func main() { ctx := context.Background() // Load Azure App Configuration appConfig, err := loadAzureAppConfiguration(ctx) if err != nil { log.Fatalf("Error loading Azure App Configuration: %v", err) } // Create feature flag provider featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig) if err != nil { log.Fatalf("Error creating feature flag provider: %v", err) } // Register custom filters options := &featuremanagement.Options{ Filters: []featuremanagement.FeatureFilter{ &RandomFilter{}, }, } // Create feature manager with custom filters featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, options) if err != nil { log.Fatalf("Error creating feature manager: %v", err) } // ...existing code... }
Filtro de recursos em ação
Reinicie o aplicativo e atualize o navegador algumas vezes. Sem alternar manualmente o sinalizador de recurso, o menu Beta aparece aleatoriamente com base na porcentagem que você definiu.
Next steps
Para saber mais sobre os filtros de recursos internos, continue para os seguintes documentos.
Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos Go, continue para o documento a seguir.