Sdílet prostřednictvím


Povolení podmíněných funkcí s vlastním filtrem ve webové aplikaci Go Gin

Příznaky funkcí můžou používat filtry funkcí k podmíněnému povolení funkcí. Další informace ofiltrch

Příklad použitý v této příručce je založený na webové aplikaci Go Gin představené v rychlém startu pro správu funkcí. Než budete pokračovat, dokončete rychlý start a vytvořte webovou aplikaci Go Gin s příznakem funkce Beta . Po dokončení musíte přidat vlastní filtr funkcí do příznaku funkce Beta v Obchodě App Configuration Store.

V této příručce se dozvíte, jak implementovat vlastní filtr funkcí a použít filtr funkcí k podmíněnému povolení funkcí.

Prerequisites

Implementace vlastního filtru funkcí

Přidali jste vlastní filtr funkcí s názvem Random s parametrem Percentage pro příznak funkce Beta v požadavcích. Dále implementujete filtr funkcí, který povolí příznak funkce Beta na základě pravděpodobnosti definované parametrem Procento .

  1. Vytvořte random_filter.go soubor s následujícím kódem:

    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
    }
    

    Přidali jste RandomFilter strukturu, která implementuje FeatureFilter rozhraní z featuremanagement knihovny. Rozhraní FeatureFilter má dvě metody:

    • Name() vrátí název filtru Random, který odpovídá názvu filtru, který jste nastavili v příznaku funkce Beta v Azure App Configuration.
    • Evaluate() je volána při vyhodnocování příznaku funkce. Filtrování funkcí aktivuje příznak funkce vrácením true.
  2. Aktualizujte svůj main.go soubor pro zaregistrování RandomFilter při vytváření správce funkcí:

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

Filtr funkcí v akci

Znovu spusťte aplikaci a několikrát aktualizujte prohlížeč. Bez ručního přepnutí příznaku funkce se nabídka Beta zobrazí náhodně na základě nastaveného procenta.

Snímek obrazovky webové aplikace Gin se skrytou nabídkou Beta.

Snímek obrazovky z webové aplikace Gin s nabídkou Beta

Next steps

Další informace o předdefinovaných filtrech funkcí najdete v následujících dokumentech.

Úplný přehled funkcí knihovny pro správu funkcí Go najdete v následujícím dokumentu.