Feign - 基礎使用

 

關於Feign

 Feign通過註解聲明的方式簡單化的實現了Http的相關調用,使我在以http方式調用遠程接口時更加簡單,代碼也更加簡潔,只需要創建接口,增加相關的註解就可以了。

使用

引入相關包

         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign-core</artifactId>
            <version>2.0.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-core</artifactId>
            <version>10.2.0</version>
            <scope>compile</scope>
        </dependency>

註解聲明

  • @PostMapping、@GetMapping 聲明請求方法,同時可配置header,請求、返回值類型等
  • @RequestParam 聲明參數通過url地址傳遞
  • @RequestBody 聲明參數通過requestBody傳遞

調用服務端接口(Get、Post不同形式只需改變相關 @Mapping註解,具體根據調用接口的要求就可以)

  • RequestBody中傳參 - Map形式實現,map中添加相關參數
@FeignClient(name = "test", url = "${test.url}")
public interface SensitiveRemoteService {



    @PostMapping(value = "/feign/test", consumes = MediaType.APPLICATION_JSON_VALUE
            ,headers = {"Content-Type=application/json", "key=${test.key}"})
    SensitiveRespVo batchMatch(Map<String,?> body);

}

 

  • RequestBody中傳參 - 對象形式實現,添加註解@RequestBody,這種形式限制只能一個參數,所以自己要封裝好參數到一個對象
@FeignClient(name = "test", url = "${test.url}")
public interface SensitiveRemoteService {



    @PostMapping(value = "/feign/test", consumes = MediaType.APPLICATION_JSON_VALUE
            ,headers = {"Content-Type=application/json", "key=${test.key}"})
    SensitiveRespVo batchMatch(@RequestBody SensitiveReqVo sensitiveReqVo);

}

 

  • 地址傳參 - 添加註解@RequestParam
@FeignClient(name = "test", url = "${test.url}")
public interface SensitiveRemoteService {



    @PostMapping(value = "/feign/test", consumes = MediaType.APPLICATION_JSON_VALUE
            ,headers = {"Content-Type=application/json", "key=${test.key}"})
    SensitiveRespVo batchMatch(@RequestParam("param1") String param1, @RequestParam("param2") String param2);

}

總結

Feign通過解析註解、使用代理的方式封裝我們模版化的http請求,一步一步封裝爲真正的請求,大大簡化了代碼中的http調用。

跟進去可以到看的代理封裝請求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章