【283、能不能给我演示一下OpenFeign的使用?】

86 阅读1分钟

当然可以!下面是一个简单的演示,演示了如何使用OpenFeign客户端库进行REST API的调用。

  1. 在pom.xml中添加OpenFeign依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>
  1. 创建一个Feign客户端接口
@FeignClient(name = "github", url = "https://api.github.com")
public interface GitHubApiClient {

    @GetMapping("/repos/{owner}/{repo}/contributors")
    List<Contributor> getContributors(@PathVariable("owner") String owner,
                                      @PathVariable("repo") String repo);
}

在这个接口中,我们使用@FeignClient注解指定了Feign客户端的名称和要调用的API的基本URL。然后我们定义了一个方法来获取Github上某个仓库的贡献者列表,使用@GetMapping注解指定了API的路径,并使用@PathVariable注解指定了路径中的变量。

  1. 创建一个POJO类,表示API返回的数据
public class Contributor {
    private String login;
    private int contributions;

    // getter and setter
}
  1. 在应用中注入该Feign客户端接口
@SpringBootApplication
@EnableFeignClients
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Autowired
    private GitHubApiClient gitHubApiClient;

    @PostConstruct
    public void run() {
        List<Contributor> contributors = gitHubApiClient.getContributors("square", "retrofit");
        contributors.forEach(contributor -> System.out.println(contributor.getLogin() + ": " + contributor.getContributions()));
    }
}

在这里,我们使用@EnableFeignClients注解启用了Feign客户端,并使用@Autowired注解注入了上一步创建的Feign客户端接口。然后我们在run()方法中调用了该接口的getContributors()方法来获取贡献者列表,并打印了贡献者的用户名和贡献次数。

这就是一个简单的OpenFeign使用示例,您可以按照这个示例自己创建和调用API。