Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las marcas de características pueden usar filtros de características para habilitarlas de forma condicional. Para más información sobre los filtros de características, consulte Habilitación de características condicionales con filtros de características.
El ejemplo usado en esta guía se basa en la aplicación web Go Gin introducida en el inicio rápido de administración de características. Antes de continuar, complete el inicio rápido para crear una aplicación web Go Gin con una marca de característica Beta . Una vez completado, debe agregar un filtro de características personalizado a la marca de característica beta en el almacén de App Configuration.
En esta guía, aprenderá a implementar un filtro de características personalizado y a usar el filtro de características para habilitar las características de forma condicional.
Prerequisites
- Cree una aplicación web Go Gin con una marca de característica.
- Agregar un filtro de características personalizado a la marca de característica
Implementación de un filtro de características personalizado
Ha agregado un filtro de características personalizado denominado Aleatorio con un parámetro de Porcentaje para la marca de característica Beta en los requisitos previos. A continuación, implementará el filtro de características para habilitar la marca de característica beta en función de la probabilidad definida por el parámetro de porcentaje.
Cree un archivo
random_filter.gocon el código siguiente: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 }Ha agregado una
RandomFilterestructura que implementa laFeatureFilterinterfaz de lafeaturemanagementbiblioteca. LaFeatureFilterinterfaz tiene dos métodos:Name()devuelve el nombre de filtro Random, que coincide con el nombre de filtro que estableció en la marca de característica Beta en Azure App Configuration.Evaluate()se llama cada vez que se evalúa un flag de característica. Un filtro de características activa una bandera de característica al devolvertrue.
Actualice el archivo
main.gopara registrarRandomFilteral crear el administrador de características:// ...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 características en acción
Vuelva a iniciar la aplicación y actualice el explorador varias veces. Sin alternar manualmente la marca de características, el menú Beta aparece aleatoriamente en función del porcentaje establecido.
Next steps
Para obtener más información sobre los filtros de características integrados, continúe con los siguientes documentos.
Para obtener la lista completa de características de la biblioteca de administración de características de Go, continúe con el siguiente documento.