在 ASP.NET Core 中,可以利用 IFeatureManager 來轉換 API 要開啟或關閉。

例如像這樣:

[FeatureGate(MyFeatureFlags.FeatureB)]
[HttpGet("FB")]
public IActionResult FB()
{
    return Json(new { id = 1, Name = "Peter", Age = 14 });
}

首先要安裝 nuget 套件:Microsoft.FeatureManagement.AspNetCore

接下來加入設定:

"FeatureManagement": {
    "FeatureA": true,
    "FeatureB": false,
    "FeatureC": true
}

接下來加入類別:

public class MyFeatureFlags
{
    public const string FeatureA = "FeatureA";
    public const string FeatureB = "FeatureB";
    public const string FeatureC = "FeatureC";
}

再來是在 Program.cs 加入設定:

builder.Services.AddControllersWithViews();
IConfiguration config = builder.Configuration;
builder.Services.AddFeatureManagement(config.GetSection("FeatureManagement"));

最後設定 controller:

public class TestAPIController : Controller
{
 private readonly IFeatureManager _featureManager;

 public TestAPIController(IFeatureManager featureManager)
 {
     _featureManager = featureManager;
 }

 [HttpGet]
 [FeatureGate(MyFeatureFlags.FeatureA)]
 public IActionResult FA()
 { 
     return Ok("OK");
 }

 [HttpGet]
 [FeatureGate(MyFeatureFlags.FeatureB)]
 public IActionResult FB()
 {
     return Json(new { id = 1, Name = "Peter", Age = 14 });
 }

 [HttpGet]
 [FeatureGate(MyFeatureFlags.FeatureC)]
 public IActionResult FC()
 {
     return Json(new { id = 1, Name = "John", Age = 24 });
 }
}

參考資料