Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Functievlagmen kunnen functiefilters gebruiken om functies voorwaardelijk in te schakelen. Zie Voorwaardelijke functies inschakelen met functiefilters voor meer informatie over functiefilters.
Het voorbeeld dat in deze handleiding wordt gebruikt, is gebaseerd op de Go Gin-webtoepassing die is geïntroduceerd in de quickstart voor functiebeheer. Voordat u verdergaat, voltooit u de quickstart om een Go Gin-webtoepassing te maken met een bètafunctievlag . Zodra dit is voltooid, moet u een aangepast functiefilter toevoegen aan de Bèta-functievlag in uw App Configuration-opslag.
In deze handleiding leert u hoe u een aangepast functiefilter implementeert en het functiefilter gebruikt om functies voorwaardelijk in te schakelen.
Prerequisites
- Maak een Go Gin-webtoepassing met een functievlag.
- Een aangepast functiefilter toevoegen aan de functievlag
Een aangepast functiefilter implementeren
U hebt een aangepast functiefilter met de naam Random toegevoegd aan de vereisten, met een parameter Percentage voor uw bèta-functievlag. Vervolgens implementeert u het functiefilter om de vlag Bèta-functie in te schakelen op basis van de kans die is gedefinieerd door de parameter Percentage .
Maak een
random_filter.gobestand met de volgende code: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 }U hebt een
RandomFilterstruct toegevoegd waarmee deFeatureFilterinterface uit defeaturemanagementbibliotheek wordt geïmplementeerd. DeFeatureFilterinterface heeft twee methoden:-
Name()retourneert de filternaam Random, die overeenkomt met de filternaam die u hebt ingesteld in de bètafunctievlag in Azure App Configuration. -
Evaluate()wordt aangeroepen wanneer een functievlag wordt geëvalueerd. Met een functiefilter kan een functievlag worden ingeschakeld doortruete retourneren.
-
Werk uw
main.gobestand bij om hetRandomFilterte registreren bij het maken van de featuremanager.// ...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... }
Functiefilter in actie
Start de toepassing opnieuw en vernieuw de browser een paar keer. Zonder de functievlag handmatig in te schakelen, wordt het bètamenu willekeurig weergegeven op basis van het percentage dat u hebt ingesteld.
Next steps
Ga verder met de volgende documenten voor meer informatie over de ingebouwde functiefilters.
Ga naar het volgende document voor het volledige overzicht van de functies van de bibliotheek voor functiebeheer in Go.