Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os sinalizadores de recursos podem usar filtros de recursos para habilitar os recursos condicionalmente. Para saber mais sobre os filtros de recursos, consulte Habilitar os recursos condicionais com os filtros de recursos.
O exemplo usado neste guia baseia-se no aplicativo Web Go Gin introduzido no início rápido do gerenciamento de recursos. Antes de continuar, conclua o guia de início rápido para criar um aplicativo Web Go Gin com um sinalizador de recursos Beta. Depois de concluído, você deve adicionar um filtro de recurso personalizado ao sinalizador de recurso Beta no repositório de Configuração de Aplicativos.
Neste guia, você aprenderá a implementar um filtro de recurso personalizado e usar o filtro de recursos para habilitar os 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 requisitos prévios. Em seguida, você implementará o filtro de recursos para habilitar o sinalizador de recurso Beta com base na chance definida pelo parâmetro Percentage.
Crie um arquivo
random_filter.gocom o código a seguir: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 um
RandomFilterstruct que implementa aFeatureFilterinterface dafeaturemanagementbiblioteca. AFeatureFilterinterface tem dois métodos:Name()retorna o nome do filtro Aleatório, que corresponde ao nome do filtro definido no sinalizador de recurso Beta na Configuração de Aplicativos do Azure.Evaluate()é chamado sempre que um flag de funcionalidade é avaliado. Um filtro de recurso habilita um sinalizador de recurso retornandotrue.
Atualize o arquivo
main.gopara registrar oRandomFilterao criar o gerenciador de funcionalidades:// ...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 recurso em ação
Reinicie o aplicativo e atualize o navegador algumas vezes. Sem alternar manualmente o sinalizador de recurso, o menu Beta é exibido aleatoriamente com base no percentual definido.
Next steps
Para saber mais sobre os filtros de recursos incorporados, consulte os documentos a seguir.
Para a visão geral completa das funcionalidades da biblioteca de gerenciamento de funcionalidades Go, consulte o documento a seguir.