国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

這篇具有很好參考價(jià)值的文章主要介紹了Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

場(chǎng)景

Forest

聲明式HTTP客戶端API框架,讓Java發(fā)送HTTP/HTTPS請(qǐng)求不再難。它比OkHttp和HttpClient更高層,

是封裝調(diào)用第三方restful api client接口的好幫手,是retrofit和feign之外另一個(gè)選擇。

通過(guò)在接口上聲明注解的方式配置HTTP請(qǐng)求接口。

官網(wǎng):

Forest

Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換?

代碼地址:

forest: 聲明式HTTP客戶端API框架,讓Java發(fā)送HTTP/HTTPS請(qǐng)求不再難。它比OkHttp和HttpClient更高層,是封裝調(diào)用第三方restful api client接口的好幫手,是retrofit和feign之外另一個(gè)選擇。通過(guò)在接口上聲明注解的方式配置HTTP請(qǐng)求接口

Forest的功能較多,下面記錄一個(gè)比較常用的功能,就是調(diào)用第三方api獲取數(shù)據(jù),并將json數(shù)據(jù)解析成對(duì)象。

注:

博客:
霸道流氓氣質(zhì)的博客_CSDN博客-C#,架構(gòu)之路,SpringBoot領(lǐng)域博主

實(shí)現(xiàn)

1、需要事先模擬一個(gè)第三方api的接口,各種方式均可,除了代碼編寫(xiě)、nginx代理等還可以使用如下方式

HTTP JSON接口模擬工具interfake的使用(模擬接口返回json數(shù)據(jù)):

HTTP JSON接口模擬工具interfake的使用(模擬接口返回json數(shù)據(jù))_霸道流氓氣質(zhì)的博客-CSDN博客

按照上面的過(guò)程并修改模擬數(shù)據(jù)的js文件內(nèi)容為

var Interfake = require('interfake');
var interfake = new Interfake();
interfake.get('/badao').status(200)
.body(
??? {?
??????? "id": 123,
??????? "name": "霸道的程序猿",
??????? "age": 100,
??????? "address":"青島",
??????? "banji":"一班"
??? }
);
interfake.get('/badaoStu').status(200)
.body(
??? {?
??????? "id": 123,
??????? "name": "霸道的程序猿",
??????? "age": 100,
??????? "address":"青島",
??????? "banji":"一班"
??? }
);

確保該接口可以用

Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-440205.html

2、搭建SpringBoot項(xiàng)目

若依前后端分離版手把手教你本地搭建環(huán)境并運(yùn)行項(xiàng)目:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662?

在上面的基礎(chǔ)搭建之后,開(kāi)始集成Forest。

3、SpringBoot項(xiàng)目中添加依賴

??????? <dependency>
??????????? <groupId>com.dtflys.forest</groupId>
??????????? <artifactId>forest-spring-boot-starter</artifactId>
??????????? <version>1.5.30</version>
??????? </dependency>

當(dāng)前版本為1.5.30。

若依框架已經(jīng)自帶json數(shù)據(jù)的解析依賴。

然后修改配置文件yml,添加forest的相關(guān)配置

#Forest 全局配置
forest:
? backend: okhttp3???????????? # 后端HTTP框架(默認(rèn)為 okhttp3)
? max-connections: 1000??????? # 連接池最大連接數(shù)(默認(rèn)為 500)
? max-route-connections: 500?? # 每個(gè)路由的最大連接數(shù)(默認(rèn)為 500)
? max-request-queue-size: 100? # [自v1.5.22版本起可用] 最大請(qǐng)求等待隊(duì)列大小
? max-async-thread-size: 300?? # [自v1.5.21版本起可用] 最大異步線程數(shù)
? max-async-queue-size: 16???? # [自v1.5.22版本起可用] 最大異步線程池隊(duì)列大小
? timeout: 3000??????????????? # [已不推薦使用] 請(qǐng)求超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 3000)
? connect-timeout: 3000??????? # 連接超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 timeout)
? read-timeout: 3000?????????? # 數(shù)據(jù)讀取超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 timeout)
? max-retry-count: 0?????????? # 請(qǐng)求失敗后重試次數(shù)(默認(rèn)為 0 次不重試)
? ssl-protocol: TLS??????????? # 單向驗(yàn)證的HTTPS的默認(rèn)TLS協(xié)議(默認(rèn)為 TLS)
? log-enabled: true??????????? # 打開(kāi)或關(guān)閉日志(默認(rèn)為 true)
? log-request: true??????????? # 打開(kāi)/關(guān)閉Forest請(qǐng)求日志(默認(rèn)為 true)
? log-response-status: true??? # 打開(kāi)/關(guān)閉Forest響應(yīng)狀態(tài)日志(默認(rèn)為 true)
? log-response-content: true?? # 打開(kāi)/關(guān)閉Forest響應(yīng)內(nèi)容日志(默認(rèn)為 false)
? async-mode: platform???????? # [自v1.5.27版本起可用] 異步模式(默認(rèn)為 platform)

更多詳細(xì)配置參考官方文檔

?? Springboot環(huán)境配置項(xiàng) | Forest

Forest 可以在forest.variables屬性下自定義全局變量。

其中 key 為變量名,value 為變量值。

全局變量可以在任何模板表達(dá)式中進(jìn)行數(shù)據(jù)綁定。

比如這里把第三方的api的ip和端口以及基礎(chǔ)地址等配置在yml中

?
#Forest 全局配置
forest:
? backend: okhttp3???????????? # 后端HTTP框架(默認(rèn)為 okhttp3)
? max-connections: 1000??????? # 連接池最大連接數(shù)(默認(rèn)為 500)
? max-route-connections: 500?? # 每個(gè)路由的最大連接數(shù)(默認(rèn)為 500)
? max-request-queue-size: 100? # [自v1.5.22版本起可用] 最大請(qǐng)求等待隊(duì)列大小
? max-async-thread-size: 300?? # [自v1.5.21版本起可用] 最大異步線程數(shù)
? max-async-queue-size: 16???? # [自v1.5.22版本起可用] 最大異步線程池隊(duì)列大小
? timeout: 3000??????????????? # [已不推薦使用] 請(qǐng)求超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 3000)
? connect-timeout: 3000??????? # 連接超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 timeout)
? read-timeout: 3000?????????? # 數(shù)據(jù)讀取超時(shí)時(shí)間,單位為毫秒(默認(rèn)為 timeout)
? max-retry-count: 0?????????? # 請(qǐng)求失敗后重試次數(shù)(默認(rèn)為 0 次不重試)
? ssl-protocol: TLS??????????? # 單向驗(yàn)證的HTTPS的默認(rèn)TLS協(xié)議(默認(rèn)為 TLS)
? log-enabled: true??????????? # 打開(kāi)或關(guān)閉日志(默認(rèn)為 true)
? log-request: true??????????? # 打開(kāi)/關(guān)閉Forest請(qǐng)求日志(默認(rèn)為 true)
? log-response-status: true??? # 打開(kāi)/關(guān)閉Forest響應(yīng)狀態(tài)日志(默認(rèn)為 true)
? log-response-content: true?? # 打開(kāi)/關(guān)閉Forest響應(yīng)內(nèi)容日志(默認(rèn)為 false)
? async-mode: platform???????? # [自v1.5.27版本起可用] 異步模式(默認(rèn)為 platform)

? #全局變量定義
? variables:
??? thirdApi:
????? baseUrl: http://127.0.0.1:666

?

4、創(chuàng)建一個(gè)Interface,比如這里叫IBusThirdApiService

import com.dtflys.forest.annotation.BaseRequest;
import com.dtflys.forest.annotation.Get;
import com.ruoyi.system.domain.BusStudent;
import org.springframework.stereotype.Service;


@BaseRequest(baseURL = "${thirdApi.baseUrl}")
@Service
public interface IBusThirdApiService {

??? @Get("/badao")
??? String getData();

??? @Get("/badaoStu")
??? BusStudent getStudentData();
}

注意這里的

@BaseRequest(baseURL = "${thirdApi.baseUrl}")

就是設(shè)置該接口的基礎(chǔ)地址,這里是引用上面yml中配置的全局變量。

@Service

注入spring容器,可在需要的其他地方自動(dòng)注入。

通過(guò)@Get注解,將上面方法綁定了一個(gè) HTTP 請(qǐng)求, 并默認(rèn)使用GET方式,并創(chuàng)建兩個(gè)接口方法,

其中一個(gè)是返回字符串,一個(gè)是將json數(shù)據(jù)轉(zhuǎn)換成對(duì)象。

這里需要新建對(duì)象BusStudent

public class BusStudent extends BaseEntity
{
??? private static final long serialVersionUID = 1L;

??? /** id */
??? private Integer id;

??? /** 姓名 */
??? @Excel(name = "姓名")
??? private String name;

??? /** 年齡 */
??? @Excel(name = "年齡")
??? private Integer age;

??? /** 地址 */
??? @Excel(name = "地址")
??? private String address;

??? /** 班級(jí) */
??? @Excel(name = "班級(jí)")
??? private String banji;

??? public void setId(Integer id)
??? {
??????? this.id = id;
??? }

??? public Integer getId()
??? {
??????? return id;
??? }
??? public void setName(String name)
??? {
??????? this.name = name;
??? }

??? public String getName()
??? {
??????? return name;
??? }
??? public void setAge(Integer age)
??? {
??????? this.age = age;
??? }

??? public Integer getAge()
??? {
??????? return age;
??? }
??? public void setAddress(String address)
??? {
??????? this.address = address;
??? }

??? public String getAddress()
??? {
??????? return address;
??? }
??? public void setBanji(String banji)
??? {
??????? this.banji = banji;
??? }

??? public String getBanji()
??? {
??????? return banji;
??? }

??? @Override
??? public String toString() {
??????? return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
??????????? .append("id", getId())
??????????? .append("name", getName())
??????????? .append("age", getAge())
??????????? .append("address", getAddress())
??????????? .append("banji", getBanji())
??????????? .toString();
??? }
}

5、至此方法調(diào)用接口就完成了,注意這里版本是1.5.30,所以不用進(jìn)行掃描接口的配置,不用再修改啟動(dòng)類

Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

?

然后便能在其他代碼中從 Spring 上下文注入接口實(shí)例,然后如調(diào)用普通接口那樣調(diào)用即可。

6、發(fā)送請(qǐng)求,這里模擬在定時(shí)任務(wù)中定時(shí)發(fā)起請(qǐng)求調(diào)用接口

import com.ruoyi.system.domain.BusStudent;
import com.ruoyi.system.service.IBusThirdApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@EnableScheduling
public class FurestTestTask {

??? @Autowired
??? private IBusThirdApiService iBusThirdApiService;

??? @Scheduled(fixedRateString = "5000")
??? public void taskGetData() {
??????? String data = iBusThirdApiService.getData();
??????? System.out.println("請(qǐng)求getData接口返回?cái)?shù)據(jù):"+data);
??????? BusStudent busStudent = iBusThirdApiService.getStudentData();
??????? System.out.println("請(qǐng)求getStudentData接口返回?cái)?shù)據(jù):"+busStudent);
??? }
}

運(yùn)行結(jié)果

Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

?

到了這里,關(guān)于Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • kafka:java集成 kafka(springboot集成、客戶端集成)

    kafka:java集成 kafka(springboot集成、客戶端集成)

    摘要 對(duì)于java的kafka集成,一般選用springboot集成kafka,但可能由于對(duì)接方kafka老舊、kafka不安全等問(wèn)題導(dǎo)致kafak版本與spring版本不兼容,這個(gè)時(shí)候就得自己根據(jù)kafka客戶端api集成了。 一、springboot集成kafka 具體官方文檔地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

    2023年04月22日
    瀏覽(92)
  • SpringBoot2.0集成WebSocket,多客戶端

    適用于單客戶端,一個(gè)賬號(hào)登陸一個(gè)客戶端,登陸多個(gè)客戶端會(huì)報(bào)錯(cuò) The remote endpoint was in state [TEXT_FULL_WRITING]? 這是因?yàn)榇藭r(shí)的session是不同的,只能鎖住一個(gè)session,解決此問(wèn)題的方法把全局靜態(tài)對(duì)象鎖住,因?yàn)橘~號(hào)是唯一的

    2024年02月10日
    瀏覽(22)
  • 二、springboot集成CAS客戶端實(shí)現(xiàn)單點(diǎn)登錄

    pom中引入依賴 yml中添加cas配置 讀取CAS相關(guān)配置 cas配置類 單點(diǎn)登錄接口demo 訪問(wèn)loingCas接口時(shí),若未在CASserver登錄,則會(huì)被攔截跳轉(zhuǎn)到CAS的登陸頁(yè)面,登陸成功后放行繼續(xù)訪問(wèn)loginCas接口

    2024年02月15日
    瀏覽(23)
  • SpringBoot集成WebSocket實(shí)現(xiàn)客戶端與服務(wù)端通信

    SpringBoot集成WebSocket實(shí)現(xiàn)客戶端與服務(wù)端通信

    話不多說(shuō),直接上代碼看效果! 一、服務(wù)端: 1、引用依賴 2、添加配置文件 WebSocketConfig 3、編寫(xiě)WebSocket服務(wù)端接收、發(fā)送功能 ? 聲明接口代碼: ? 實(shí)現(xiàn)類代碼: 4、如果不需要實(shí)現(xiàn)客戶端功能,此處可選擇前端調(diào)用,奉上代碼 二、客戶端: 1、引用依賴 2、自定義WebSocket客

    2024年01月23日
    瀏覽(24)
  • SpringBoot集成Elasticsearch客戶端(新舊版本)(2023-01-28)

    SpringBoot集成Elasticsearch客戶端(新舊版本)(2023-01-28)

    第一章 SpringBoot集成ElasticSearch(2023-01-28) 例如:業(yè)務(wù)中需要使用es,所以做一些客戶端選型,熟悉一下基本的操作,所以記錄這篇博客,有關(guān)概念理論性的文章還在整理過(guò)程中,后續(xù)會(huì)整理個(gè)系列 Spring認(rèn)證中國(guó)教育管理中心-Spring Data Elasticsearch教程一 SpringData集成Elasticsearch Sp

    2024年02月07日
    瀏覽(24)
  • Springboot 集成WebSocket作為客戶端,含重連接功能,開(kāi)箱即用

    使用演示 只需要init后調(diào)用sendMessage方法即可,做到開(kāi)箱即用。內(nèi)部封裝了失敗重連接、斷線重連接等功能。 基于Springboot工程 引入websocket依賴 開(kāi)箱即用的工具類

    2024年02月04日
    瀏覽(36)
  • SpringBoot集成WebSocket實(shí)現(xiàn)客戶端與服務(wù)端長(zhǎng)連接通信

    SpringBoot集成WebSocket實(shí)現(xiàn)客戶端與服務(wù)端長(zhǎng)連接通信

    場(chǎng)景: 1、WebSocket協(xié)議是用于前后端長(zhǎng)連接交互的技術(shù),此技術(shù)多用于交互不斷開(kāi)的場(chǎng)景。特點(diǎn)是連接不間斷、更輕量,只有在關(guān)閉瀏覽器窗口、或者關(guān)閉瀏覽器、或主動(dòng)close,當(dāng)前會(huì)話對(duì)象才會(huì)關(guān)閉。 2、相較于 Http/Https?通信只能由客戶端主動(dòng)發(fā)起請(qǐng)求,而 Socket?通信不僅能

    2024年02月02日
    瀏覽(28)
  • springboot集成webstock實(shí)戰(zhàn):服務(wù)端數(shù)據(jù)推送數(shù)據(jù)到客戶端實(shí)現(xiàn)實(shí)時(shí)刷新

    springboot集成webstock實(shí)戰(zhàn):服務(wù)端數(shù)據(jù)推送數(shù)據(jù)到客戶端實(shí)現(xiàn)實(shí)時(shí)刷新

    ????之前介紹過(guò)springboot集成webstock方式,具體參考: springboot集成websocket實(shí)戰(zhàn):站內(nèi)消息實(shí)時(shí)推送 這里補(bǔ)充另外一個(gè)使用webstock的場(chǎng)景,方便其他同學(xué)理解和使用,廢話不多說(shuō)了,直接開(kāi)始!簡(jiǎn)單介紹一下業(yè)務(wù)場(chǎng)景: ????現(xiàn)在有一個(gè)投票活動(dòng),活動(dòng)詳情中會(huì)顯示投票活動(dòng)的參與人數(shù)、訪

    2024年02月08日
    瀏覽(48)
  • SpringBoot集成Milo庫(kù)實(shí)現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點(diǎn)、讀取、寫(xiě)入、訂閱與批量訂閱

    SpringBoot集成Milo庫(kù)實(shí)現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點(diǎn)、讀取、寫(xiě)入、訂閱與批量訂閱

    前面我們搭建了一個(gè)本地的 PLC 仿真環(huán)境,并通過(guò) KEPServerEX6 讀取 PLC 上的數(shù)據(jù),最后還使用 UAExpert 作為OPC客戶端完成從 KEPServerEX6 這個(gè)OPC服務(wù)器的數(shù)據(jù)讀取與訂閱功能。在這篇文章中,我們將通過(guò) SpringBoot 集成 Milo 庫(kù)實(shí)現(xiàn)一個(gè) OPC UA 客戶端,包括連接、遍歷節(jié)點(diǎn)、讀取、寫(xiě)入

    2024年02月09日
    瀏覽(27)
  • 還在用HttpUtil?SpringBoot 3.0全新HTTP客戶端工具來(lái)了,用起來(lái)夠優(yōu)雅!

    還在用HttpUtil?SpringBoot 3.0全新HTTP客戶端工具來(lái)了,用起來(lái)夠優(yōu)雅!

    我們平時(shí)開(kāi)發(fā)項(xiàng)目的時(shí)候,經(jīng)常會(huì)需要遠(yuǎn)程調(diào)用下其他服務(wù)提供的接口,于是我們會(huì)使用一些HTTP工具類比如Hutool提供的HttpUtil。前不久SpringBoot 3.0發(fā)布了,出了一個(gè) Http Interface 的新特性,它允許我們使用聲明式服務(wù)調(diào)用的方式來(lái)調(diào)用遠(yuǎn)程接口,今天我們就來(lái)聊聊它的使用!

    2024年02月22日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包