Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I flag di funzionalità possono usare filtri di funzionalità per abilitare le funzionalità in modo condizionale. Per altre informazioni sui filtri delle funzionalità, vedere Abilitare le funzionalità condizionali con i filtri delle funzionalità.
L'esempio usato in questa guida si basa sull'applicazione Web Go Gin introdotta nella guida introduttiva alla gestione delle funzionalità. Prima di continuare, completare la guida introduttiva per creare un'applicazione Web Go Gin con un flag di funzionalità Beta. Al termine, è necessario aggiungere un filtro di funzionalità personalizzato al flag di funzionalità Beta nell'archivio di Configurazione app.
In questa guida si apprenderà come implementare un filtro di funzionalità personalizzato e usare il filtro delle funzionalità per abilitare le funzionalità in modo condizionale.
Prerequisites
- Creare un'applicazione web in Go Gin con un flag di funzionalità.
- Aggiungere un filtro di funzionalità personalizzato al flag di funzionalità
Implementare un filtro di funzionalità personalizzato
È stato aggiunto un filtro di funzionalità personalizzato denominato Random con un parametro Percentage per il flag di funzionalità Beta nei prerequisiti. Successivamente, si implementerà il filtro delle funzionalità per abilitare il flag di funzionalità Beta in base alla probabilità definita dal parametro Percentuale.
Creare un file
random_filter.gocon il codice seguente: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 }Hai aggiunto una struct
RandomFilterche implementa l'interfacciaFeatureFilterdella libreriafeaturemanagement. L'interfacciaFeatureFilterha due metodi:Name()restituisce il nome del filtro Random, che corrisponde al nome del filtro impostato nel flag di funzionalità Beta in Configurazione app di Azure.Evaluate()viene chiamato ogni volta che viene valutato un flag di funzionalità. Un filtro di funzionalità abilita un flag di funzionalità restituendotrue.
Aggiornare il file
main.goper registrare ilRandomFilterdurante la creazione del gestore delle funzionalità:// ...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... }
Filtro funzionalità in azione
Riavviare l'applicazione e aggiornare il browser per alcune volte. Il menu Beta viene visualizzato casualmente in base alla percentuale impostata senza che si intervenga sul flag di funzionalità.
Next steps
Per altre informazioni sui filtri di funzionalità predefiniti, continuare con i documenti seguenti.
Per il rundown completo delle funzionalità della libreria di gestione delle funzionalità Go, continuare con il documento seguente.