轻松与外来客户进行REST通信

在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务。

Spring Boot是基于Java的框架,可简化Web和企业应用程序的构建。 Spring Boot具有嵌入式Tomcat,提供“启动器”依赖关系,并且不需要配置XML。

Feign是由Netflix开发的用于实现REST API客户端的声明性框架。 Feign允许构建REST客户端来声明和注释接口,实际实现在运行时提供。

1.项目环境

此示例将使用以下工具实现:

  1. JDK 1.8.81
  2. IntelliJ 2018.2.2
  3. Spring Boot 2.0.4
  4. 摇篮4.10
  5. 春云Finchley.SR1

有了这些信息,让我们开始吧!

2.创建一个Spring Boot应用程序

单击文件->新建->项目

Feign Client-创建一个Spring Boot应用程序

创建一个Spring Boot应用程序-步骤1

选择Spring Initializr并选择适当的JDK版本。


Feign Client-创建一个Spring Boot应用程序-步骤2

创建一个Spring Boot应用程序-步骤2

添加工件名称

选择Gradle Project,然后为您的项目输入一个版本

Feign Client-创建一个Spring Boot应用程序-步骤3

创建一个Spring Boot应用程序-步骤3

在下一个窗口中,选择以下选项:

  • 核心-> DevTools
  • 网页->网页
  • 云->云引导
Feign Client-创建一个Spring Boot应用程序-步骤4

创建一个Spring Boot应用程序-步骤4

选择项目的位置,然后单击“ 完成”按钮。

Feign Client-创建一个Spring Boot应用程序-步骤5

创建一个Spring Boot应用程序-步骤5

和瞧!

您有一个Spring Boot应用程序。

Feign Client-创建一个Spring Boot应用程序-步骤6

创建一个Spring Boot应用程序–步骤6

3.创建一个控制器并启动应用程序

创建一个名为FeignController类。 将Java类注释为Controller并实现GET方法,该方法返回带有伪数据的ResponseEntity 。 之后,我将使用真实信息来完成地图。

package com.example.feign.controller;

@RestController
public class FeignController {

    private final IWeatherClient weatherClient;

    @Autowired
    public FeignController(IWeatherClient weatherClient) {
        this.weatherClient = weatherClient;
    }

    @GetMapping(path = "/weather")
    ResponseEntity<Map> getWeather() {
        return ResponseEntity.ok(weatherClient.getWeather().getBody());
    }
}

使用用于部署应用程序的端口编辑文件application.properties。

server.port=9090

最后,运行并测试该应用程序的第一个版本。

假冒客户-测试应用程序

测试应用

4.假冒客户实施

编辑build .gradle文件,并包括以下依赖项:

compile('org.springframework.boot:spring-boot-starter-web-services')
compile('org.springframework.cloud:spring-cloud-starter-openfeign')
compile('org.springframework.cloud:spring-cloud-starter-config')

记住运行build Gradle任务。

Feign Client-运行构建Gradle任务

运行构建Gradle任务

创建一个程序包和一个接口。

它将是我们的假客户。

我将其命名为IWeatherClient

虚假客户-创建新班级

创建一个新的班级

将界面注释为FeignClient并添加一种获取天气的方法。

注释@FeignClient要求您包括服务的名称和URL。

在这种情况下,我选择了诸如name之类的数据,并为URL使用了一个属性。

package com.example.feign.feign;

@FeignClient(name = "data", url = "${feign.client.url}")
public interface IWeatherClient {

    @RequestMapping(method = RequestMethod.GET)
    ResponseEntity<Map> getWeather();

}

为接口添加一个实现。 如果在调用该服务时出现问题,这将是一个后备。 在这种情况下,我没有后备功能,因此我将返回null。

package com.example.feign.feign.imp;

@Component
public class WeatherFallback implements IWeatherClient {

    @Override
    public ResponseEntity



<map> getWeather() {
        return null;
    }

}
</map>

注释主类以启用Feign客户。 注释@EnableFeignClients要求您包括基本软件包。

package com.example.feign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients(basePackages = {"com.example.feign.feign",
        "com.example.feign.controller"})
public class FeignApplication {

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

最后,在控制器中使用伪客户端,然后再次运行该应用程序。

伪装客户-创建伪装客户的结果

创建Feign客户的结果

5.结论

此项解释了如何使用Feign构建一个声明性HTTP客户端以使用Weather API。 Feign的目标是降低与HTTP APIS统一绑定分母的复杂性,而不管其是否平静。

6.下载项目

下载
您可以在此处下载此示例的完整源代码: Feign示例

翻译自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值