feign_与Feign客户轻松进行REST通信
feign
在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务。
Spring Boot是基于Java的框架,可简化Web和企业应用程序的构建。 Spring Boot具有嵌入式Tomcat,提供“启动程序”依赖关系,并且不需要配置XML。
Feign是由Netflix开发的用于实现REST API客户端的声明性框架。 Feign允许构建REST客户端声明和注释接口,实际实现在运行时提供。
1.项目环境
此示例将使用以下工具实现:
- JDK 1.8.81
- IntelliJ 2018.2.2
- Spring Boot 2.0.4
- Gradle4.10
- 春云Finchley.SR1
有了这些信息,让我们开始吧!
2.创建一个Spring Boot应用程序
单击文件->新建->项目
创建一个Spring Boot应用程序-步骤1
选择Spring Initializr并选择适当的JDK版本。
创建一个Spring Boot应用程序-步骤2
添加一个组和工件名称。
选择Gradle Project,然后为您的项目输入一个版本。
创建一个Spring Boot应用程序-步骤3
在下一个窗口中,选择选项:
- 核心-> DevTools
- 网页->网页
- 云->云引导
创建一个Spring Boot应用程序–步骤4
选择项目的位置,然后单击“完成”按钮。
创建一个Spring Boot应用程序–步骤5
和瞧!
您有一个Spring Boot应用程序。
创建一个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任务。
运行构建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.下载项目
翻译自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html
feign
feign_与Feign客户轻松进行REST通信相关推荐
- feign rest_与Feign客户轻松进行REST通信
feign rest 在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务. Spring Boot是基 ...
- feign扫描_微服务通信之feign的注册、发现过程
前言 feign 是目前微服务间通信的主流方式,是springCloud中一个非常重要的组件.他涉及到了负载均衡.限流等组件.真正意义上掌握了feign可以说就掌握了微服务. 一.feign的使用 f ...
- 串口NFC模块,轻松实现NFC通信
串口NFC模块方案 一.主要特点: 用户只需通过Uart串口控制就能实现NFC设备间数据传输.不需要了解NFC底层协议,迅速完成产品开发. 二.支持平台: WinXP.Win7.Win8.Win1 ...
- JAVA通信(二)——实现客户机和服务器通信
前面一篇博客我们简单地理清了JAVA创建服务器,以及客户机连接服务器的流程,今天我们继续往下学习,实现客户机和服务器的通信.由于基本概念我们已经在前一篇博客说清楚了,这里我们就不再进行赘述.(不清楚的 ...
- Linux C TCP Socket实现客户与服务器简单通信
在Linux平台下用C语言udp协议实现客户与服务器的简单通信与封装的实现 一.服务器端 1.新建CreateServer.c和CreateServer.h文件,服务器的创建代码在此实现,程序中封装了 ...
- 轻松与外来客户进行REST通信
在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务. Spring Boot是基于Java的框架,可简 ...
- C语言限制双开关不同为1,网络环境下不同客户之间通信的C语言编程方法(第1稿)...
网络环境下不同客户之间相互通信的C语言编程方法 大多数网络应用系统可分成客户和服务器两部分,他们之间的通信可能涉及两种方式:服务器和客户之间的通信,客户和客户之间的通信.本文主要阐明了网络环境下不同客 ...
- IEC61850变电站基本通信结构-原理和模型_6客户-服务器
新的一天,加油! 在通信中,设备被看做服务器和客户端的关系,根据具体场合,角色有时会有所转换. 服务器模型 下图是服务器和客户端的通信介绍 C/S通信协议集通信 客户端和服务器都是基于ACSI(抽象通 ...
- 要闻君说:阿里云联合8家芯片模组商推出“全平台通信模组”;北汽与小桔车服联合“京桔”;IBM要帮助印度公司打造5G战略!...
关注并标星星CSDN云计算 每周三次,打卡即read 更快.更全了解泛云圈精彩news go go go 嗨,大家好!偶是要闻君.盼望着.盼望着,放假的日子又临近了一步,抢先祝福各位看官们新年快乐哈 ...
最新文章
- 如何为Pyramid添加Middleware
- qq昵称由fly改为思诺
- 面向特定专业领域的计算机,大学计算机文化基础考试题(本科)基础知识部分
- 华为交换机—RRPP协议
- 转:Webkit Flex伸缩盒模型属性备忘
- 【直播回看】「EDGE X Kubernetes · 云原生在边缘的实践与应用」
- elasticsearch 的滚动(scroll)
- 全球视频监控设备市场规模分析
- oracle逻辑备份和物理备份,Oracle备份与恢复介绍(物理备份与逻辑备份)
- 在linux下搭建mysql数据库(以linux 版本Ubuntu18.04为例进行讲解)
- dismiss android,[转]Android对话框中dismiss和cancel、hide的区别
- 语音识别学习笔记(三)【动态时间归正的识别技术】
- Maven学习总结(52)——Maven 配置文件密码加密机制使用说明
- 7-汇编大小写字符互相转化+[bx+idata]+SI/DI
- 统计机器翻译与神经机器翻译区别_几十年的领域专家告诉你,机器翻译进化到哪一步了?...
- linux 命令之(2)grep
- 1024 程序员节,拿个勋章
- 2022车险购买:新手上路必看
- 10个的国外大学论文期刊网站分享
- java 超卖_Java生鲜电商平台-秒杀系统如何防止超买与超卖?(小程序/APP)
热门文章
- zabbix监控利用Python脚本发邮件
- linux系统下安装配置iSCSI教程
- 不可小瞧的GetHashCode函数
- 一条龙奇迹私服WEB系统后门及bug
- SAP BPC最佳实践-SAP BPC的OLAP引擎比较(MS OLAPBW OLAP)
- java.text.SimpleDateFormat多线程下的问题
- linux shell awk 中 printf 用法
- mysql text 最大长度 报错 Row size too large. The maximum row size for the used table type
- linux shell 按行 逐行 读取文件
- easyui messager 消息框 对话框