Compartir a través de


Habilitación de características condicionales con un filtro personalizado en una aplicación web go Gin

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

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.

  1. Cree un archivo random_filter.go con 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 RandomFilter estructura que implementa la FeatureFilter interfaz de la featuremanagement biblioteca. La FeatureFilter interfaz 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 devolver true.
  2. Actualice el archivo main.go para registrar RandomFilter al 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.

Captura de pantalla de la aplicación web Gin con el menú Beta oculto.

Captura de pantalla de la aplicación web Gin con el menú Beta.

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.