# spring cloud feign
introduction
netflix feign
是一个类似retrofit
进行http调用框架,Feign makes writing java http clients easier
使得编写http client
代码更加简单
netflix feign
直接给出一段简单的案例
package com.lkl.netflix.feign;
import feign.*;
import feign.codec.ErrorDecoder;
import feign.codec.Decoder;
import feign.gson.GsonDecoder;
import java.io.IOException;
import java.util.List;
/**
* Created by liaokailin on 16/5/9.
*/
public class GitHubExample {
interface GitHub {
// 1
@RequestLine("GET /repos/{owner}/{repo}/contributors")
List<Contributor> contributors(@Param("owner") String owner, @Param("repo") String repo);
}
public static void main(String... args) {
Decoder decoder = new GsonDecoder(); // 2
GitHub github = Feign.builder()
.decoder(decoder) // 3
.errorDecoder(new GitHubErrorDecoder(decoder)) // 4
.logger(new Logger.ErrorLogger()) // 5
.logLevel(Logger.Level.BASIC) // 5
.target(GitHub.class, "https://api.github.com"); // 6
System.out.println("Let's fetch and print a list of the contributors to this library.");
List<Contributor> contributors = github.contributors("netflix", "feign"); // 7
for (Contributor contributor : contributors) {
System.out.println(contributor.login + " (" + contributor.contributions + ")");
}
System.out.println("Now, let's cause an error.");
try {
github.contributors("netflix", "some-unknown-project"); // 8
} catch (GitHubClientError e) {
System.out.println(e.getMessage());
}
}
static class Contributor {
String login;
int contributions;
}
static class GitHubClientError extends RuntimeException {