如何根据RestController路径参数设置FF4j RegionFlippingStrategy?

问题描述 投票:0回答:2

我刚刚开始使用 FF4j 根据用户所在的市场(市场 = 品牌/国家对)在 2 个不同的 API 实现之间切换。这是代码片段:

@RestController
@RequestMapping("/{brand}/{country}")
public class HomeController {

    private final ApiService apiService;

    public HomeController(@Qualifier("new-api") ApiService apiService) {
        this.apiService = apiService;
    }

    @GetMapping("/hey")
    public String hey(@PathVariable("brand") String brand,
                      @PathVariable("country") String country) {
        return apiService.whichApi();
    }

}

interface ApiService {
    @Flip(name = "legacy-api", alterBean = "legacy-api")
    String whichApi();
}

@Component("new-api")
class NewApiApiService implements ApiService {
    @Override
    public String whichApi() {
        return "NEW_API";
    }
}

@Component("legacy-api")
class LegacyApiApiService implements ApiService {
    @Override
    public String whichApi() {
        return "LEGACY_API";
    }
}

我创建了一个

RegionFlippingStrategy
如文档所说)来定义我想使用的
market
,但我无法使其工作。
如何将我的新策略注册到 FF4j 中?

如何根据家庭控制器

legacy-api

输入动态切换API?

    

ff4j
2个回答
0
投票
如何将我的新策略注册到 FF4j 中?

我们来提醒一下策略代码

brand/country

public class MarketFlippingStrategy extends AbstractFlipStrategy {

 private final Set<String> setOfGrantedMarket = new HashSet<String>();

 @Override
 public void init(String featureName, Map<String, String> initValue) { 
   super.init(featureName, initValue);  
   assertRequiredParameter("grantedMarket");
   String[] arrayOfRegions = initValue.get("grantedMarket").split(",");
   setOfGrantedRegions.addAll(Arrays.asList(arrayOfRegions));
 }

 @Override
 public boolean evaluate(String fName, FeatureStore fStore, FlippingExecutionContext ctx) {
  return setOfGrantedRegions.contains(ctx.getString("market", true));
 }
}

应在特征定义中注册

FlipStrategy

您可以使用 Web 控制台手动执行此操作(功能 > 编辑功能 > 选择字段策略并编辑类和参数 (param1=value1)。
  • 您可以在文件中执行此操作并使用控制台导入 ff4j 现在支持
  • legacy-api
  • xml
    yaml
    
    
  • 根据以下定义,该功能将仅针对授予的市场启用:

properties

如何根据家庭控制器品牌/国家/地区输入动态切换 API?

“技巧”是将情侣品牌/国家/地区作为单个变量

<?xml version="1.0" encoding="UTF-8" ?> <features> <feature uid="legacy-api" enable="true" > <flipstrategy class="org.ff4j.sample.strategy.MarketFlippingStrategy" > <param name="grantedMarket">country1-brand1,country1-brand2</param> </flipstrategy> </feature> </features>

传递到

market
this
中,这将帮助您理解它是如何工作的。 FlippingExecutionContext



0
投票

创建品牌就是要亲自参与。通过了解品牌需求及其在市场中的定位,制定策略。我们的想法是了解需求并在该领域定位品牌。

访问:-

https://whorv.com/branding/

© www.soinside.com 2019 - 2024. All rights reserved.