Megosztás a következőn keresztül:


Feltételes funkciók engedélyezése egyéni szűrővel Go Gin-webalkalmazásokban

A funkciójelzők funkciószűrőkkel feltételesen engedélyezhetik a funkciókat. A funkciószűrőkkel kapcsolatos további információkért lásd : Feltételes szolgáltatások engedélyezése funkciószűrőkkel.

Az ebben az útmutatóban használt példa a szolgáltatásfelügyeleti rövid útmutatóban bemutatott Go Gin webalkalmazáson alapul. A folytatás előtt végezze el a Go Gin-webalkalmazás bétaverziós funkciójelzővel való létrehozásához szükséges rövid útmutatót. Ha végzett, hozzá kell adnia egy egyéni funkciószűrőt az Alkalmazáskonfigurációs áruház bétafunkció-jelzőjéhez .

Ebben az útmutatóban megtudhatja, hogyan implementálhat egyéni funkciószűrőt, és hogyan használhatja a funkciószűrőt a szolgáltatások feltételes engedélyezéséhez.

Prerequisites

Egyéni funkciószűrő implementálása

Az előfeltételek között egy Véletlenszerű nevű egyéni funkciószűrőt adott hozzá a béta funkciózászlóhoz a százalékos paraméterrel. Ezután implementálja a funkciószűrőt, hogy engedélyezze a bétaverzió funkciójelzőjét a Százalék paraméter által meghatározott esély alapján.

  1. Hozzon létre egy random_filter.go fájlt a következő kóddal:

    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
    }
    

    Hozzáadott egy RandomFilter struktúrát, amely implementálja a FeatureFilter interfészt a featuremanagement könyvtárból. Az FeatureFilter interfésznek két módszere van:

    • Name()A Véletlenszerű szűrőnevet adja vissza, amely megegyezik az Azure App Configuration bétafunkció-jelölőjében beállított szűrőnévvel.
    • Evaluate() a funkciójelző kiértékelésekor meghívja. A funkciószűrő a visszaadással engedélyezi a funkciójelzőt true.
  2. Frissítse a main.go fájlt a RandomFilter regisztrálásához a funkciókezelő létrehozásakor.

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

Funkciószűrő működés közben

Indítsa újra az alkalmazást, és frissítse a böngészőt néhányszor. A funkciójelző kézi kapcsolása nélkül a Béta menü véletlenszerűen jelenik meg az Ön által beállított százalék alapján.

Képernyőkép a Gin webalkalmazásról rejtett Béta menüvel.

Képernyőkép a Gin webalkalmazásról a Béta menüvel.

Next steps

A beépített funkciószűrőkről az alábbi dokumentumokban olvashat bővebben.

A Go funkciókezelő könyvtár teljes funkciólistáját a következő dokumentummal folytathatja.