【问题标题】:How to Impliment LaunchDarkly feature management in .net core api如何在 .net core api 中实现 LaunchDarkly 功能管理
【发布时间】:2021-03-28 05:01:25
【问题描述】:

我想在我的 .net 核心 api 中添加 LaunchDarkly 功能管理。在实时项目中如何添加?

我有一个包含所有功能的接口文件。这个接口将如何参与 LD 调用?

我很困惑如何为配置创建通用文件并调用不同的控制器!任何帮助将不胜感激!

我在示例程序中做了什么..

  1. 我在 LD 网站中创建了一个标志,并将以下代码添加到 main

    Configuration ldConfig = LaunchDarkly.Client.Configuration
                 // TODO: Enter your LaunchDarkly SDK key here
                 .Default("YOUR_SDK_KEY");
    
         LdClient client = new LdClient(ldConfig);
         User user = User.Builder("bob@example.com")
           .FirstName("Bob")
           .LastName("Loblaw")
           .Custom("groups", "beta_testers")
           .Build();
    
         // TODO: Enter the key for your feature flag key here
         var value = client.BoolVariation("YOUR_FEATURE_FLAG_KEY", user, false);
    
         if (value)
         {
             Console.WriteLine("Showing feature for user " + user.Key);
         }
         else
         {
             Console.WriteLine("Not showing feature for user " + user.Key);
         }
    

但是现在我有一个包含大量代码、多个控制器的实时 api 项目。我怎样才能使这个 LD 类通用?请帮帮我..谢谢

【问题讨论】:

    标签: azure asp.net-apicontroller launchdarkly


    【解决方案1】:

    首先,在 appsettings.json 中声明密钥。然后创建一个接口类来声明你想要的方法。

    public interface IFeatureFlagsService
    {
        T GetFeatureFlag<T>(string flagKey, string userKey);
    }
    

    现在实现这个接口

    using LaunchDarkly.Client;
    
    public class FeatureFlagsService : IFeatureFlagsService
    {
    private readonly LdClient _ldClient;
    
    public FeatureFlagsService(IConfiguration configuration)
    {
        _ldClient = new LdClient(configuration["LaunchDarkly:Key"]);
    }
    
    public T GetFeatureFlag<T>(string flagKey, string userKey = "anonymous")
    {
        var user = User.WithKey(userKey);
    
        if (typeof(T).Equals(typeof(bool)))
            return (T)(object)_ldClient.BoolVariation(flagKey, user, default);
        else if (typeof(T).Equals(typeof(int)))
            return (T)(object)_ldClient.IntVariation(flagKey, user, default);
        else if (typeof(T).Equals(typeof(float)))
            return (T)(object)_ldClient.FloatVariation(flagKey, user, default);
        else if (typeof(T).Equals(typeof(string)))
            return (T)(object)_ldClient.StringVariation(flagKey, user, default);
    
        return default;
    }
    }
    

    确保在 startup.cs 中注入配置

    services.AddSingleton<IFeatureFlagsService>(sp => new FeatureFlagsService(configuration));
    

    现在你可以在你的控制器中注入这个 IFeatureFlagService 并像这样调用

    _featureFlagService.GetFeatureFlag<bool>("isExternalUser");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 2022-08-20
      • 1970-01-01
      • 2013-04-10
      • 2021-04-14
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多