Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Flagi funkcji mogą używać filtrów funkcji w celu warunkowego włączania funkcji. Aby dowiedzieć się więcej na temat filtrów funkcji, zobacz Włączanie funkcji warunkowych z filtrami funkcji.
Przykład używany w tym przewodniku jest oparty na aplikacji internetowej Go Gin wprowadzonej w przewodniku Szybki start dotyczącym zarządzania funkcjami. Przed kontynuowaniem ukończ szybki start, aby utworzyć aplikację internetową Go Gin z flagą funkcjonalności Beta. Po zakończeniu należy dodać niestandardowy filtr funkcji do flagi funkcji Beta w usłudze App Configuration.
W tym przewodniku dowiesz się, jak zaimplementować niestandardowy filtr funkcji i użyć filtru funkcji w celu warunkowego włączenia funkcji.
Prerequisites
- Utwórz aplikację internetową Go Gin z flagą funkcji.
- Dodawanie niestandardowego filtru funkcji do flagi funkcji
Implementowanie niestandardowego filtru funkcji
Dodałeś niestandardowy filtr funkcji o nazwie Random z parametrem Procent dla flagi funkcji Beta w wymaganiach wstępnych. Następnie zaimplementujesz filtr funkcji, aby włączyć flagę funkcji beta na podstawie prawdopodobieństwa zdefiniowanego przez parametr Percentage .
random_filter.goUtwórz plik z następującym kodem: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 }Dodano strukturę
RandomFilter, która implementujeFeatureFilterinterfejs zfeaturemanagementbiblioteki. InterfejsFeatureFilterma dwie metody:-
Name()Zwraca nazwę filtru Random, która jest zgodna z nazwą filtru ustawioną w flagi funkcji beta w usłudze Azure App Configuration. -
Evaluate()jest wywoływane za każdym razem, gdy flaga funkcji jest oceniana. Filtr funkcji umożliwia flagę funkcji, zwracając wartośćtrue.
-
Zaktualizuj
main.goplik, aby zarejestrowaćRandomFilterpodczas tworzenia menedżera funkcji.// ...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... }
Filtr funkcji w akcji
Uruchom ponownie aplikację i odśwież przeglądarkę kilka razy. Bez ręcznego przełączania flagi funkcji menu Beta jest wyświetlane losowo na podstawie ustawionej wartości procentowej.
Next steps
Aby dowiedzieć się więcej na temat wbudowanych filtrów funkcji, przejdź do następujących dokumentów.
Aby zapoznać się z pełnym zestawieniem funkcji biblioteki do zarządzania funkcjami w Go, przejdź do poniższego dokumentu.