宣言的APIクライアントSpring Cloud Feignを使ってみる
Spring Cloud Feignを利用すると、Spring MVCと同じアノテーション(@RequestMapping)を使ってAPIクライアントを定義できます。同じアノテーションが使えるので学習コストを抑えられるメリットがあるでしょう。また、APIサーバとAPIクライアントの仕様が同じ場合は共通の宣言が使えます。APIレスポンスを加工して返すといった単純な場合に役立ちそうです。
import org.springframework.cloud.netflix.feign.FeignClient import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMethod @FeignClient(name = 'github', url = 'https://api.github.com') interface GitHubClient { @RequestMapping(method = RequestMethod.GET, value = '/users/{userName}/events') List<GHEvent> findUserEvents(@PathVariable('userName') String userName) }
@FeignClientを付けるとHystrixも有効になります。デフォルトのタイムアウト(1秒)は以下の設定で変更できます。
# application.yml hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 60000
以下の依存関係を追加するとFeignが利用できるようになります。
// build.gradle dependencies { compile 'org.springframework.cloud:spring-cloud-starter-feign:1.2.1.RELEASE' }
Spring Cloud Feignの詳細は下記のドキュメントを参照してください。
http://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.2.1.RELEASE/#spring-cloud-feign
参考までに、サンプルプロジェクトを少しずつ作ってたりします。