轻松与外来客户进行REST通信
在这个例子中,我们将向您展示如何使用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
- 摇篮4.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.下载项目
您可以在此处下载此示例的完整源代码: Feign示例
翻译自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html
轻松与外来客户进行REST通信相关推荐
- 怎么通过MQTT查看数据是否上云端_干货 | 设备快速上云,轻松搞定设备与云端通信...
本文主要讲解如何使用京东云物联网引擎产品,快速创建产品及设备,并通过SDK将设备安全地连接至云端,实现设备的数据上报与订阅,让刚接触该产品的用户能够对京东云物联网平台有个初步的认识. 目前京东云 Io ...
- Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
场景 Netty的Socket编程详解-搭建服务端与客户端并进行数据传输: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1086 ...
- EventBus,轻松实现跨组件跨线程通信
安卓基础开发库,让开发简单点. DevRing & Demo地址:github.com/LJYcoder/De- 学习/参考地址: http://blog.csdn.net/itachi85/ ...
- 专业应用软件随身带,一招助您轻松搞定客户
电脑和电脑之间的价格差距从数千到数万不等,造成这种巨大差异的就是配置不同,一些专业的应用软件,如绘图软件.设计软件.视频剪辑软件等对电脑配置都是有要求的,公司为了工作的需要,都是配有专门的高配电脑. ...
- 轻松易懂arduino低功耗BLE蓝牙通信
今天我们介绍蓝牙通信的另一种方式--BLE(Bluetooth Low Energy,蓝牙低功耗). 什么是BLE 在<无线通信3:HC05/HC06经典蓝牙BT ...
- C语言限制双开关不同为1,网络环境下不同客户之间通信的C语言编程方法(第1稿)...
网络环境下不同客户之间相互通信的C语言编程方法 大多数网络应用系统可分成客户和服务器两部分,他们之间的通信可能涉及两种方式:服务器和客户之间的通信,客户和客户之间的通信.本文主要阐明了网络环境下不同客 ...
- 融合通信(中移动)----微信的强力竞争者来了----阿冬专栏!!!
融合通信(中移动)----微信的强力竞争者来了 ----兴趣了解内容 面对微信的垄断地位,三家运营商对于微信等OTT服务的态度有着明显的区别.中国联通是主动合作,2013年8月,中国联通广东公司与微信 ...
- 电销CRM客户关系管理系统开发12大核心功能
电销CRM管理系统软件是一款专门针对电销行业开发的客户关系管理软件,它能够帮助企业实现对顾客信息的可视化,智能化,自动化管理,提高电销效率和客户满意度.电销行业在传统互联网营销,新媒体营销,短视频营销 ...
- 云通信未来发展,技术革新是重点
说到云通信,整个互联网圈都闪着期待的光.自云通信成为热门开始占据行业讨论话题前列起,围绕云通信的思考和讨论就从未止息. 确实,在移动互联网信息产量呈几何性爆发的大背景下,应用市场不断增长的APP,迅猛 ...
最新文章
- mysql查询各个知识点
- 建立循环双链表(尾插法)
- 未能添加对***.dll的引用 问题解决方法
- 使用 vue + thinkjs 开发博客程序记录
- EL中的param和params
- 数字三角形——递归、递推、记忆化搜索
- java reduce 分组_使用JAVA8 stream中三个参数的reduce方法对List进行分组统计
- vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令
- JQuery学习系列(三)语法
- 7天快速掌握MySQL-DAY5
- java 线程意外中断重启处理办法(观察者模式)
- 小胜凭智, 大胜靠德
- 英语语法基础01(句子结构)
- 关于trycatchfinal返回值问题
- C#毕业设计——基于C#+asp.net+sqlserver的汽车修理厂物资流通管理系统设计与实现(毕业论文+程序源码)——物资流通管理系统
- 帝国时代3 怎样旋转建筑物
- Mac宝藏软件推荐(笔者也在用)(一)
- ROC曲线的含义以及画法
- 职业梦想是计算机的英语作文,我梦想的职业高中英语作文
- python和按键精灵自动化测试_按键精灵对APP自动化测试(上)
热门文章
- 数学推导题,NTT,快速数论变换,Wannafly-导数卷积
- 2-sat模板- 输出可行解
- 两张趣图助你理解 HTTP 状态码
- art-template入门(四)之调试
- JVM 调优和垃圾回收器说明
- Oracle入门(十四.1)之PL / SQL简介
- [初级]Java中的switch对整型、字符型、字符串的具体实现细节
- 多线程的线程通信(生产消费)
- mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL
- Intellij IDEA 重置所有工具栏 Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法