亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot工程下使用OpenFeign常見問題及解決方法

發布時間:2021-07-02 17:16:15 來源:億速云 閱讀:775 作者:chen 欄目:開發技術

這篇文章主要講解了“SpringBoot工程下使用OpenFeign常見問題及解決方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SpringBoot工程下使用OpenFeign常見問題及解決方法”吧!

一、前言

在SpringBoot工程(注意不是SpringCloud)下使OpenFeign的大坑。為什么不用SpringCloud中的Feign呢?

首先我的項目比較簡單(目前只有login與業務模塊)所以暫時不去引入分布式的架構,但兩個服務之間存在一些聯系因此需要接口調用接口(實現該操作方式很多我選擇了OpenFeign,踩坑之路從此開始。。。)。

二、具體的坑

使用OpenFeign我是直接參考官方的demo,官方的例子寫的簡潔明了直接套用到自己的工程中即可,自己也可以做相應的封裝再調用但demo中使用到了一個feign的核心注解@RequestLine,問題就是出在該注解上。

此時你去做調試如果使用的是GET請求,被請求的接口則會收到POST的請求然后A接口(請求方)就報500的錯誤,B接口(被請求方)則提示接口不支持POST請求(不支持POST請求是非常正常的,因為B接口定義的method是GET方法)。

以下是我的代碼片段:

自定義UserFeign接口

public interface UserFeign { 
    /**
     * 根據userId獲取用戶信息
     * @param userId
     * @return
     */
    @RequestLine("GET /user/getUserById?id={id}")
    Result getUserById(@Param("id") String userId);
}

調用UserFeign接口

@Service
public class UserService{ 
    /**
     * 通過OpenFegin實現接口調用接口
      * @param userId
     * @return
     */
    public Result getUserByIdWith(String userId) {
        UserFeign userInfo = Feign.builder()
                .decoder(new JacksonDecoder())
                .target(UserFeign.class, "http://localhost:8080");
        Result res = userInfo.getUserById(userId);
        return res;
    }
}

A接口 (請求方)

@RequestMapping(value = "/test", method = RequestMethod.GET)
public Result test() {
    String id = "ad545461300a";
    return userService.getUserByIdWith(id);
}

B接口 (被請求方)

@RequestMapping(value = "/getUserById", method = RequestMethod.GET)
public Result getUserByUserId(@RequestParam(required = true) String id){
    if ("".equals(id)) {
        throw new BusinessException(400, "userId不能為空!");
    }
    Users info = usersService.getUserById(id);
    if (info == null) {
        throw new BusinessException(404, "userId有誤!");
    }
    return ResultUntil.success(info);
}

以上代碼我做了一些小調整,將調用UesrFeign接口中的方法封裝在UserService中并且使用了@service這樣我就可以在其它地方直接注入UserService然后調用其中方法。

你會覺得以上代碼跟官網的demo沒啥區別但官方文檔中并沒有說明使用@RequestLine注解需要進行配置(事實上需要進行配置的)。

配置代碼如下:

@Bean
public Contract useFeignAnnotations() {
    return new Contract.Default();
}

完成以上的配置就可以進行正常的調用了,該問題困擾我好幾天了今天終于解決了(真不容易),希望該文章沒有白寫。

最后感謝這篇文章讓我在放棄的時候找到了思路。(調試中遇到的細節問題就不在此進行贅述了)

感謝各位的閱讀,以上就是“SpringBoot工程下使用OpenFeign常見問題及解決方法”的內容了,經過本文的學習后,相信大家對SpringBoot工程下使用OpenFeign常見問題及解決方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳阳市| 梅河口市| 柳河县| 桂平市| 竹山县| 湘潭市| 方山县| 藁城市| 乌鲁木齐县| 全州县| 杭锦后旗| 文山县| 磐石市| 井研县| 尚义县| 通山县| 佛坪县| 旅游| 嘉定区| 万安县| 息烽县| 仲巴县| 苗栗县| 西乡县| 富蕴县| 紫阳县| 武穴市| 安徽省| 漾濞| 泌阳县| 永嘉县| 邯郸县| 韩城市| 广州市| 阿拉善盟| 清涧县| 通化市| 开江县| 古田县| 白玉县| 兴隆县|