feign rest_与Feign客户轻松进行REST通信

feign 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. Gradle4.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;@Autowiredpublic 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 {@Overridepublic 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

feign rest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Properties常用方法

一、概念 java.util.Properties 继承于Hashtable &#xff0c;来表示一个持久的属性集。它使用键值结构存储数据&#xff0c;每个键及其对应值都是一个字符串。该类也被许多Java类使用&#xff0c;比如获取系统属性时&#xff0c;System.getProperties 方法就是返回一个Proper…

linux 丢包多少正常_Linux 问题故障定位,看看这篇

转自&#xff1a;Lucien_168https://www.jianshu.com/p/0bbac570fa4c1、背景有时候会遇到一些疑难杂症&#xff0c;并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累&#xff0c;并且有些问题…

zsh 主题的下载和安装

文章目录agnostergalloisspaceshipPowerlevel10kzsh 主题列表&#xff1a; https://github.com/ohmyzsh/ohmyzsh/wiki/Themes https://github.com/robbyrussell/oh-my-zsh/wiki/themes agnoster agnoster 是比较常用的 zsh 主题之一&#xff0c;但是该主题是依赖于 Powerline…

spock 集成测试_使用Spock 1.2简化对遗留应用程序的集成测试

spock 集成测试了解如何利用Spock 1.2切片传统应用程序的Spring上下文&#xff0c;编写集成测试。 您是否曾经想过&#xff0c;要开始使用一些遗留应用程序&#xff0c;编写一些测试以了解正在发生的事情&#xff0c;并可能收到有关回归的通知&#xff1f; 当您想实例化单个类时…

Stream流的基本使用方法

Stream流的基本使用方法 0.常用方法 在介绍的各种方法中&#xff0c;凡是返回值仍然为Stream接口的为函数拼接方法&#xff0c;它们支持链式调用&#xff1b;而返回值不再为Stream接口的为终结方法&#xff0c;不再支持链式调用。如下表所示&#xff1a; 方法名方法作用方法…

iTerm2主题

iTerm2 最常用的主题是 Solarized Dark theme&#xff0c;下载地址&#xff1a;http://ethanschoonover.com/solarized 下载的是压缩文件&#xff0c;你先解压一下&#xff0c;然后打开 iTerm2&#xff0c;按 Command , 键&#xff0c;打开 Preferences 配置界面&#xff0c;…

包包各部位名称图解_品尝烤肉必备!日本和牛各部位名称中日翻译对照 点餐更轻松...

谈到日本美食&#xff0c;又怎么能少了在全球首屈一指的和牛&#xff1f;但是日本大部分烤肉餐厅里的菜单都是日语&#xff0c;而且肉的部分众多&#xff0c;点餐时一定傻傻分不清&#xff0c;一脸懵逼了&#xff01;今天小T为大家分享日本和牛肉各部位名称的中日语对照&#x…

Java程序开发三步骤:编写、编译、运行

1.Java语言跨平台原理 1.1Java虚拟机——JVM JVM&#xff08;Java Virtual Machine &#xff09;&#xff1a;Java虚拟机&#xff0c;简称JVM&#xff0c;是运行所有Java程序的假想计算机&#xff0c;是Java程序的 运行环境&#xff0c;是Java 最具吸引力的特性之一。我们编写…

corda_Corda服务的异步流调用

corda如何使流程更快&#xff1f; 如果您与Corda合作已有一段时间&#xff0c;那么您很有可能已经考虑过这一点。 您可以通过以下几方面进行合理的调整以提高性能&#xff1a;事务大小&#xff0c;优化查询并减少整个Flow执行过程中所需的网络跃点数。 在某种程度上&#xff0c…

Powerline专用字体安装_PowerFonts字体库安装_Meslo LG字体安装

文章目录单独下载某个 Meslo LG 字体通过命令方式安装全部 Meslo LG 字体zsh 如果使用主题 agnoster&#xff0c;而该主题依赖于 Powerline&#xff0c;而 Powerline 的正常显示有依赖于字体 Meslo LG&#xff0c;要不然会出现乱码的情况&#xff0c;如下所示&#xff1a;单…

delphi7 中文注释字体_使用nerd-font/font-patcher为字体添加字体图标

Nerd-fonts常用来在终端下显示各种图标&#xff0c;这个项目的github repo下提供了许多Nerd Font字体&#xff0c;图标使用效果如图。由于目前Windows Terminal还不支持设置第二字体&#xff0c;要想使用nerd font就必须替换掉原有字体。Nerd font的github页面下提供了许多常见…

Mybatis框架(待完善)

框架 框架&#xff08;Framework&#xff09;是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法&#xff1b;另一种定义认为&#xff0c;框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。 简而言之&a…

MacOS安装Powerline

文章目录安装卸载查看配置&#xff08;可以忽略这部分&#xff09;Powerline 是一款比较酷炫的状态栏工具&#xff0c;可以美化终端和 vim 界面&#xff0c;由 python 开发&#xff0c;目前仅支持 python2.X&#xff0c;由于 python2 和 python3 互不兼容&#xff0c;安装前要了…

充电器用着用着就松了怎么办_手机充电口松动怎么办?

如果手机充不进电&#xff0c;首先要检查充电器是否完好&#xff0c;如果充电器完好才考虑手机充电接口松动的可能性。手机充电口松动时&#xff0c;先换一个充电器试试&#xff0c;好多原装充电器接口挤压或踩压难免变薄&#xff0c;而手机接口长时间充电时抻曳也难免变大&…

jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut

jakarta ee城镇中有一个名为Micronaut的新微服务框架。 在本文中&#xff0c;我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架。 我是Java EE开发人员&#xff0c;因此使用诸如Eclipse MicroProfile之类的解决方案开发微服务更接近我的专业知识&#xff0c;但是…

mysql(待完善)

下载 https://www.mysql.com/cn/downloads/ 下载步骤 1.MYSQL Comunity(GPL) Downloads 2.MySql Community Server 3.根据自己电脑配置下载 4.直接下载 5.注意安装的密码加密方式 选择 使用旧版密码加密 一定要选择Use Legacy Password Encryption。&#xff08;备注&#x…

配置 Powerline 到 Vim

只需要在 vim 的配置文件 .vimrc 里面加上以下语句&#xff0c;再重启一下终端就可以啦&#xff5e; set rtp/usr/local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.shset nocompatible set t_Co256let g:minBufExplForceSyntaxEnable 1 python from po…

c++判断二叉树是否为二叉搜索树_原创 | 好端端的数据结构,为什么叫它SB树呢?...

点击上方蓝字&#xff0c;关注并星标&#xff0c;和我一起学技术。大家好&#xff0c;今天给大家介绍一个很厉害的数据结构&#xff0c;它的名字就很厉害&#xff0c;叫SB树&#xff0c;业内大佬往往叫做傻叉树。这个真不是我框你们&#xff0c;而是它的英文缩写就叫SBT。SBT其…

ide 日志 乱码_IDE日志分析方法pt。 1个

ide 日志 乱码介绍 我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题&#xff0c;我们尝试在日志中查找原因。 对于一些简单的情况&#xff0c;当错误阻止应用程序打开窗口时&#xff0c;这可能就足够了。 您可以在日志中找到问题&a…

.bash_profile vs .bashrc

请参阅&#xff1a;https://joshstaiger.org/archives/2005/07/bash_profile_vs.html