Bagikan melalui


Mengaktifkan fitur bersyarat dengan filter kustom di aplikasi web Go Gin

Bendera fitur dapat menggunakan filter fitur untuk mengaktifkan fitur secara kondisional. Untuk mempelajari selengkapnya tentang filter fitur, lihat Mengaktifkan fitur kondisional dengan filter fitur.

Contoh yang digunakan dalam panduan ini didasarkan pada aplikasi web Go Gin yang diperkenalkan dalam panduan cepat manajemen fitur. Sebelum melanjutkan lebih lanjut, selesaikan panduan memulai cepat untuk membuat aplikasi web Go Gin dengan penanda fitur Beta. Setelah selesai, Anda harus menambahkan filter fitur kustom ke bendera fitur Beta di penyimpanan App Configuration Anda.

Dalam panduan ini, Anda mempelajari cara menerapkan filter fitur kustom dan menggunakan filter fitur untuk mengaktifkan fitur secara kondisional.

Prerequisites

Menerapkan filter fitur kustom

Anda menambahkan filter fitur kustom bernama Acak dengan parameter Persentase untuk flag fitur Beta Anda sebagai prasyarat. Selanjutnya, Anda akan menerapkan filter fitur untuk mengaktifkan bendera fitur Beta berdasarkan kesempatan yang ditentukan oleh parameter Persentase .

  1. Buat random_filter.go file dengan kode berikut:

    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
    }
    

    Anda menambahkan sebuah RandomFilter struct yang mengimplementasikan antarmuka FeatureFilter dari pustaka featuremanagement. Antarmuka FeatureFilter memiliki dua metode:

    • Name() mengembalikan nama filter Acak, yang cocok dengan nama filter yang Anda tetapkan di bendera fitur Beta di Azure App Configuration.
    • Evaluate() dipanggil setiap kali bendera fitur dievaluasi. Filter fitur mengaktifkan flag fitur dengan mengembalikan true.
  2. Perbarui file main.go Anda untuk mendaftarkan RandomFilter saat membuat pengelola fitur:

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

Filter fitur sedang beraksi

Jalankan kembali aplikasi dan refresh browser beberapa kali. Tanpa mengubah bendera fitur secara manual, menu Beta muncul secara acak berdasarkan persentase yang Anda tetapkan.

Cuplikan layar aplikasi web Gin dengan menu Beta disembunyikan.

Cuplikan layar aplikasi web Gin dengan menu Beta.

Next steps

Untuk mempelajari selengkapnya tentang filter fitur bawaan, lanjutkan ke dokumen berikut.

Untuk ikhtisar lengkap pustaka pengelolaan fitur Go, silakan lihat dokumen berikut.