Freigeben über


Aktivieren bedingter Features mit einem benutzerdefinierten Filter in einer Go Gin-Webanwendung

Featureflags können Featurefilter verwenden, um Features bedingt zu aktivieren. Weitere Informationen zu Featurefiltern finden Sie unter Aktivieren von bedingten Features mit Featurefiltern.

Das in diesem Handbuch verwendete Beispiel basiert auf der Go Gin-Webanwendung, die in der Schnellstartanleitung für die Featureverwaltung eingeführt wurde. Bevor Sie fortfahren, führen Sie den Schnellstart zum Erstellen einer Go Gin-Webanwendung mit einem Beta-Feature-Flag aus. Nach Abschluss müssen Sie dem Beta-Featureflag in Ihrem App Configuration-Speicher einen benutzerdefinierten Featurefilter hinzufügen.

In diesem Handbuch erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter implementieren und den Featurefilter verwenden, um Features bedingt zu aktivieren.

Prerequisites

Implementieren eines benutzerdefinierten Featurefilters

Sie haben einen benutzerdefinierten Featurefilter namens Random mit einem Prozentsatz-Parameter für Ihr Betafeature-Flag in den Voraussetzungen hinzugefügt. Als Nächstes implementieren Sie den Featurefilter, um das Beta-Featureflag basierend auf der durch den Percentage-Parameter definierten Chance zu aktivieren.

  1. Erstellen Sie eine random_filter.go-Datei mit dem folgenden Code:

    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
    }
    

    Sie haben eine RandomFilter Struktur hinzugefügt, die die FeatureFilter Schnittstelle aus der featuremanagement Bibliothek implementiert. Die FeatureFilter Schnittstelle verfügt über zwei Methoden:

    • Name() gibt den Filternamen Random zurück, der dem Filternamen entspricht, den Sie im Featureflagge "Beta" in der Azure App-Konfiguration festgelegt haben.
    • Evaluate() wird immer aufgerufen, wenn ein Feature-Flag ausgewertet wird. Ein Feature-Filter ermöglicht ein Feature-Flag, indem es true zurückgibt.
  2. Aktualisieren Sie die main.go Datei, um RandomFilter beim Erstellen des Feature-Managers zu registrieren.

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

Featurefilter in Aktion

Starten Sie die Anwendung neu, und aktualisieren Sie den Browser ein paar Mal. Ohne das manuelle Umschalten der Feature-Flag wird das Beta-Menü basierend auf dem von Ihnen festgelegten Prozentsatz zufällig angezeigt.

Screenshot der Gin-Web-App mit ausgeblendetem Beta-Menü.

Screenshot der Gin Web App mit Betamenü.

Next steps

Wenn Sie mehr über die eingebauten Featurefilter erfahren möchten, fahren Sie mit den folgenden Dokumenten fort.

Lesen Sie das folgende Dokument für eine vollständige Funktionsübersicht der Go-Feature-Management-Bibliothek.