Aracılığıyla paylaş


Go Gin web uygulamasında özel filtreyle koşullu özellikleri etkinleştirme

Özellik bayrakları, özellikleri koşullu olarak etkinleştirmek için özellik filtrelerini kullanabilir. Özellik filtreleri hakkında daha fazla bilgi edinmek için bkz . Özellik filtreleri ile koşullu özellikleri etkinleştirme.

Bu kılavuzda kullanılan örnek, özellik yönetimi hızlı başlangıcında sunulan Go Gin web uygulamasını temel alır. Devam etmeden önce Beta özellik bayrağı ile bir Go Gin web uygulaması oluşturmak için hızlı başlangıç kılavuzunu tamamlayın. Tamamlandıktan sonra, Uygulama Yapılandırma deponuzdaki Beta özellik bayrağına özel bir özellik filtresi eklemeniz gerekir.

Bu kılavuzda, özel bir özellik filtresi uygulamayı ve özellikleri koşullu olarak etkinleştirmek için özellik filtresini kullanmayı öğreneceksiniz.

Prerequisites

Özel özellik filtresi uygulama

Önkoşullarda Beta özellik bayrağınız için Yüzde parametresine sahip Random adlı özel bir özellik filtresi eklediniz. Ardından, Yüzde parametresi tarafından tanımlanan şansa göre Beta özellik bayrağını etkinleştirmek için özellik filtresini uygulayacaksınız.

  1. Aşağıdaki kodla bir random_filter.go dosya oluşturun:

    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
    }
    

    featuremanagement kitaplığındaki FeatureFilter arabirimini uygulayan bir RandomFilter yapı eklediniz. Arabirimin FeatureFilter iki yöntemi vardır:

    • Name(), Azure Uygulama Yapılandırması'ndaki Beta özellik bayrağında ayarladığınız filtre adıyla eşleşen Rastgele filtre adını döndürür.
    • Evaluate(), bir özellik bayrağı değerlendirildiğinde çağrılır. Özellik filtresi, true döndürerek özellik bayrağını etkinleştirir.
  2. main.go dosyasını, özellik yöneticisini oluşturduğunuzda RandomFilter kaydedecek şekilde güncelleyin:

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

Özellik filtresi çalışır durumda

Uygulamayı yeniden başlatın ve tarayıcıyı birkaç kez yenileyin. Özellik bayrağını manuel olarak açmadan, Beta menüsü, belirlediğiniz yüzdeye göre rastgele olarak görünür.

Beta menüsü gizli Gin web uygulamasının ekran görüntüsü.

Beta menüsü ile Gin web uygulamasının ekran görüntüsü.

Next steps

Yerleşik özellik filtreleri hakkında daha fazla bilgi edinmek için aşağıdaki belgelere geçin.

Go özellik yönetimi kütüphanesinin tüm özellikleri için aşağıdaki belgede devam edin.