feign rest_与Feign客户轻松进行REST通信
feign rest
在這個(gè)例子中,我們將向您展示如何使用Feign客戶(hù)端開(kāi)發(fā)一個(gè)簡(jiǎn)單的Spring Boot Application,以使用Weather REST服務(wù)。
Spring Boot是基于Java的框架,可簡(jiǎn)化Web和企業(yè)應(yīng)用程序的構(gòu)建。 Spring Boot具有嵌入式Tomcat,提供“啟動(dòng)器”依賴(lài)關(guān)系,并且不需要配置XML。
Feign是由Netflix開(kāi)發(fā)的用于實(shí)現(xiàn)REST API客戶(hù)端的聲明性框架。 Feign允許構(gòu)建REST客戶(hù)端聲明和注釋接口,實(shí)際實(shí)現(xiàn)在運(yùn)行時(shí)提供。
1.項(xiàng)目環(huán)境
此示例將使用以下工具實(shí)現(xiàn):
有了這些信息,讓我們開(kāi)始吧!
2.創(chuàng)建一個(gè)Spring Boot應(yīng)用程序
單擊文件->新建->項(xiàng)目
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序-步驟1
選擇Spring Initializr并選擇適當(dāng)?shù)腏DK版本。
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序-步驟2
添加組和工件名稱(chēng) 。
選擇Gradle Project,然后為您的項(xiàng)目輸入一個(gè)版本 。
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序–步驟3
在下一個(gè)窗口中,選擇選項(xiàng):
- 核心-> DevTools
- 網(wǎng)頁(yè)->網(wǎng)頁(yè)
- 云->云引導(dǎo)
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序-步驟4
選擇項(xiàng)目的位置,然后單擊“ 完成”按鈕。
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序–步驟5
和瞧!
您有一個(gè)Spring Boot應(yīng)用程序。
創(chuàng)建一個(gè)Spring Boot應(yīng)用程序–步驟6
3.創(chuàng)建一個(gè)控制器并啟動(dòng)應(yīng)用程序
創(chuàng)建一個(gè)名為FeignController類(lèi)。 將Java類(lèi)注釋為Controller并實(shí)現(xiàn)GET方法,該方法返回帶有偽數(shù)據(jù)的ResponseEntity 。 之后,我將使用真實(shí)信息來(lái)完成地圖。
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());} }使用用于部署應(yīng)用程序的端口編輯文件application.properties。
server.port=9090 最后,運(yùn)行并測(cè)試該應(yīng)用程序的第一個(gè)版本。
測(cè)試應(yīng)用
4.假冒客戶(hù)實(shí)施
編輯build .gradle文件,并包括以下依賴(lài)項(xiàng):
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') 記住運(yùn)行build Gradle任務(wù)。
運(yùn)行構(gòu)建Gradle任務(wù)
創(chuàng)建一個(gè)程序包和一個(gè)接口。
它將是我們的假客戶(hù)。
我將其命名為IWeatherClient
創(chuàng)建一個(gè)新的班級(jí)
將界面注釋為FeignClient并添加一種獲取天氣的方法。
注釋@FeignClient要求您包括服務(wù)的名稱(chēng)和URL。
在這種情況下,我選擇了諸如name之類(lèi)的數(shù)據(jù),并為URL使用了一個(gè)屬性。
package com.example.feign.feign;@FeignClient(name = "data", url = "${feign.client.url}") public interface IWeatherClient {@RequestMapping(method = RequestMethod.GET)ResponseEntity<Map> getWeather();}為接口添加一個(gè)實(shí)現(xiàn)。 如果在調(diào)用該服務(wù)時(shí)出現(xiàn)問(wèn)題,這將是一個(gè)后備。 在這種情況下,我沒(méi)有后備功能,因此我將返回null。
package com.example.feign.feign.imp;@Component public class WeatherFallback implements IWeatherClient {@Overridepublic ResponseEntity<map> getWeather() {return null;}} </map>注釋主類(lèi)以啟用Feign客戶(hù)。 注釋@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);} } 最后,在控制器中使用偽客戶(hù)端,然后再次運(yùn)行該應(yīng)用程序。
創(chuàng)建Feign客戶(hù)的結(jié)果
5.結(jié)論
此項(xiàng)解釋了如何使用Feign構(gòu)建一個(gè)聲明性HTTP客戶(hù)端以使用Weather API。 Feign的目標(biāo)是降低與HTTP APIS統(tǒng)一綁定分母的復(fù)雜性,而不管其是否平靜。
6.下載項(xiàng)目
下載您可以在此處下載此示例的完整源代碼: Feign示例
翻譯自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html
feign rest
總結(jié)
以上是生活随笔為你收集整理的feign rest_与Feign客户轻松进行REST通信的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 索尼申请外置小型触摸屏专利,可“架在”P
- 下一篇: 苹果解释 macOS Sonoma 中游