Feign.builder执行GET方法

我的服务是一部分业务场景的统一的出口,为了方便,我定义了我调用业务方的入参和出参,于是写了一个通用的Feign的方法:

    @Headers({"Content-Type: application/json", "Accept: application/json"})
    @RequestLine("GET /")
    Response<PromptResult> getPromatData(@Param("cid") Long cid);

针对不同的业务场景,我定义了个枚举

@Getter
@AllArgsConstructor
public enum SceneEnum {

    SCENE_DEMO("demo", "demo", ""http://demo-server/get/data"")
    ;

    /**
     * 场景编码
     */
    private String sceneCode;
    /**
     * 场景名称
     */
    private String sceneName;
    /**
     * 场景请求URL
     */
    private String sceneRequestUrl;
    
    private static final Map<String, SceneEnum> MAP = new HashMap<>();

    static {
        for (SceneEnum handlerTypeEnum : values()) {
            MAP.put(handlerTypeEnum.getSceneCode(), handlerTypeEnum);
        }
    }
    public static SceneEnum ofSceneCode(String sceneCode) {
        return MAP.get(sceneCode);
    }
}

不同的业务场景调用的时候

IPromatDataService target = Feign.builder().client(feignClient)
                    .encoder(new JacksonEncoder())
                    .decoder(new JacksonDecoder())
                    .target(IPromatDataService.class, SceneEnum.SCENE_DEMO.getRequestUrl());
Response<PromptResult> promatData = target.getPromatData(cid);

满心以为自己写的没有,单元测试的时候发现是请求返回的是不支持的请求方式,以自己使用Feign的经验,应该是自己想用GET结果实际发起请求转为了POST,通过查询测试,做出了如下修改

    @Headers({"Content-Type: application/json", "Accept: application/json"})
    @RequestLine("GET /")
    Response<PromptResult> getPromatData();

    SCENE_DEMO("demo", "demo", "http://demo-server/get/data?cid={0}")

    IPromatDataService target = Feign.builder().client(feignClient)  
                    .encoder(new JacksonEncoder())
                    .decoder(new JacksonDecoder())
                    .target(IPromatDataService.class, MessageFormat.format(SceneEnum.SCENE_DEMO.getRequestUrl(),cid);
   Response<PromptResult> promatData = target.getPromatData();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值