Partager via


Activer les fonctionnalités conditionnelles avec un filtre personnalisé dans une application web Go Gin

Les indicateurs de fonctionnalités peuvent utiliser des filtres de fonctionnalités pour activer des fonctionnalités de manière conditionnelle. Pour en savoir plus sur les filtres de fonctionnalités, consultez Activer des fonctionnalités conditionnelles avec des filtres de fonctionnalités.

L’exemple utilisé dans ce guide est basé sur l’application web Go Gin introduite dans le guide de démarrage rapide de gestion des fonctionnalités. Avant de continuer, suivez le guide de démarrage rapide pour créer une application web Go Gin avec un indicateur de fonctionnalité bêta . Une fois terminé, vous devez ajouter un filtre de fonctionnalités personnalisé à l’indicateur de fonctionnalité Beta dans votre magasin App Configuration.

Dans ce guide, vous allez apprendre à implémenter un filtre de fonctionnalités personnalisé et à utiliser le filtre de fonctionnalités pour activer les fonctionnalités de manière conditionnelle.

Prerequisites

Implémenter un filtre de fonctionnalité personnalisé

Vous avez ajouté un filtre de fonctionnalités personnalisé nommé Random avec un paramètre Pourcentage pour votre indicateur de fonctionnalité bêta dans les conditions préalables. Ensuite, vous allez implémenter le filtre de fonctionnalités pour activer l’indicateur de fonctionnalité Beta en fonction de la chance définie par le paramètre Percentage.

  1. Créez un fichier random_filter.go avec le code suivant :

    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
    }
    

    Vous avez ajouté un RandomFilter struct qui implémente l’interface FeatureFilter à partir de la featuremanagement bibliothèque. L’interface FeatureFilter a deux méthodes :

    • Name() retourne le nom de filtre Random, qui correspond au nom de filtre que vous avez défini dans l’indicateur de fonctionnalité Bêta dans Azure App Configuration.
    • Evaluate() est appelé chaque fois qu’un indicateur de fonctionnalité est évalué. Un filtre de fonctionnalité active un indicateur de fonctionnalité en retournant true.
  2. Mettez à jour votre fichier main.go afin d'enregistrer RandomFilter lors de la création du gestionnaire de fonctionnalités.

    // ...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...
    }
    

Filtre de fonctionnalités en action

Relancez l’application et actualisez le navigateur quelques fois. Sans activer ou désactiver manuellement l’indicateur de fonctionnalité, le menu Bêta s’affiche de façon aléatoire en fonction du pourcentage défini.

Capture d’écran de l’application web Gin avec le menu Bêta masqué.

Capture d’écran de l’application web Gin avec le menu Bêta.

Next steps

Pour en savoir plus sur les filtres de fonctionnalités intégrés, consultez les documents suivants.

Pour une vue d'ensemble complète des fonctionnalités de la bibliothèque Go de gestion de fonctionnalités, consultez le document suivant.