国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

做極速賽車(chē)網(wǎng)站公眾號(hào)推廣

做極速賽車(chē)網(wǎng)站,公眾號(hào)推廣,wordpress導(dǎo)航圖標(biāo)設(shè)置,網(wǎng)絡(luò)廣告有哪些1、項(xiàng)目中接口的調(diào)用方式 1.1 HttpClient HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持 Http 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新版本和建議。HttpClient 相比傳統(tǒng) JDK 自帶的 URLConnectio…

1、項(xiàng)目中接口的調(diào)用方式

1.1 HttpClient

  • HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持 Http 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新版本和建議。HttpClient 相比傳統(tǒng) JDK 自帶的 URLConnection,提升了易用性和靈活性,使客戶端發(fā)送 HTTP 請(qǐng)求變得容易,提高了開(kāi)發(fā)的效率。

1.2 OkHttp

  • 一個(gè)處理網(wǎng)絡(luò)請(qǐng)求的開(kāi)源項(xiàng)目,是安卓端最火的輕量級(jí)框架,由 Square 公司貢獻(xiàn),用于替代 HttpUrlConnection 和 Apache HttpClient。OkHttp 擁有簡(jiǎn)潔的 API、高效的性能,并支持多種協(xié)議(HTTP/2 和 SPDY)。

1.3 HttpURLConnection

  • HttpURLConnection 是 Java 的標(biāo)準(zhǔn)類(lèi),它繼承自 URLConnection,可用于向指定網(wǎng)站發(fā)送 GET 請(qǐng)求、POST 請(qǐng)求。HttpURLConnection 使用比較復(fù)雜,不像 HttpClient 那樣容易使用。

1.4 RestTemplate

  • RestTemplate 是 Spring 提供的用于訪問(wèn) Rest 服務(wù)的客戶端,RestTemplate 提供了多種便捷訪問(wèn)遠(yuǎn)程 HTTP 服務(wù)的方法,能夠大大提高客戶端的編寫(xiě)效率。

1.5 WebClient

  • WebClient 是 Spring WebFlux 模塊提供的一個(gè)非阻塞的基于響應(yīng)式編程的進(jìn)行 Http 請(qǐng)求的客戶端工具。
  • WebFlux 對(duì)標(biāo) SpringMvc,WebClient 相當(dāng)于 RestTemplate,同時(shí)也是 Spring 官方的 Http 請(qǐng)求工具。
  • 與RestTemplate相比,WebClient的優(yōu)勢(shì):
    • 非阻塞響應(yīng)式IO,單位時(shí)間內(nèi)有限資源下支持更高的并發(fā)量。
    • 支持使用Java8 Lambda表達(dá)式函數(shù)。
    • 支持同步、異步、Stream流式傳輸。

以上是最常見(jiàn)的幾種調(diào)用接口的方式,下面介紹比上面更簡(jiǎn)單方便的方式---- Feign

2、什么是Feign

  • Feign是Netflix開(kāi)發(fā)的聲明式、模板化的HTTP客戶端,其靈感來(lái)自Retrofit、JAXRS-2.0以及WebSocket。Feign可幫助我們更加便捷、優(yōu)雅地調(diào)用HTTP API。
  • Feign支持多種注解,例如Feign自帶的注解或者JAX-RS注解等。

2.1 Feign的優(yōu)勢(shì)

  • Feign可以做到使用 HTTP 請(qǐng)求遠(yuǎn)程服務(wù)時(shí)就像調(diào)用本地方法一樣的體驗(yàn),開(kāi)發(fā)者完全感知不到這是遠(yuǎn)程方法,更感知不到這是個(gè) HTTP 請(qǐng)求。
  • 它像 Dubbo 一樣,consumer 直接調(diào)用接口方法調(diào)用 provider,而不需要通過(guò)常規(guī)的 Http Client 構(gòu)造請(qǐng)求再解析返回?cái)?shù)據(jù)。它解決了讓開(kāi)發(fā)者調(diào)用遠(yuǎn)程接口就跟調(diào)用本地方法一樣,無(wú)需關(guān)注與遠(yuǎn)程的交互細(xì)節(jié),更無(wú)需關(guān)注分布式環(huán)境開(kāi)發(fā)。

3、快速整合OpenFeign

3.1 導(dǎo)入依賴

 	<!--OpenFeign 遠(yuǎn)程調(diào)用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

3.2 編寫(xiě)調(diào)用接口

  • @FeignClient:指定遠(yuǎn)程調(diào)用的服務(wù)和方法
    /*** name:指定調(diào)用的Rest接口的服務(wù)名* path:指定調(diào)用的Rest接口的請(qǐng)求路徑,即:StockController指定的@RequestMapping中的路徑* configuration:指定配置類(lèi)*/
    @FeignClient(name = "StockService",path = "/stock/stockapi",configuration = FeignConfig.class)
    public interface StockFeignService {//聲明需要調(diào)用的Rest接口對(duì)應(yīng)的方法@RequestMapping("/handle")String getStock();}
    

3.3 在啟動(dòng)類(lèi)中開(kāi)啟遠(yuǎn)程調(diào)用的功能

  • @EnableFeignClients:開(kāi)啟遠(yuǎn)程調(diào)用
    @SpringBootApplication
    @EnableFeignClients
    //這里設(shè)置要為哪個(gè)服務(wù)提供方選用指定的負(fù)載均衡的規(guī)則
    @RibbonClients(value = {@RibbonClient(name = "StockService", configuration = RibbonConfig.class)
    })
    public class OrderServiceApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceApplication.class, args);}
    }
    

3.4 發(fā)起調(diào)用

  • 像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程服務(wù)
    @RestController
    @RequestMapping("/orderapi")
    public class OrderController {@Autowiredprivate StockFeignService stockFeignService;@RequestMapping("/add")public String addOrder(){System.out.println("OpenFeign方式調(diào)用:下單成功");String stock = stockFeignService.getStock();return "下單成功:"+ stock;}
    }
    

4、Feign的自定義配置和使用

  • Feign 提供了很多的擴(kuò)展機(jī)制,讓用戶可以更加靈活的使用。

4.1 日志配置

  • 有時(shí)候我們遇到 Bug,比如接口調(diào)用失敗、參數(shù)沒(méi)收到等問(wèn)題,或者想看看調(diào)用性能,就需要配置 Feign 的日志了,以此讓 Feign 把請(qǐng)求信息輸出來(lái)。
  • Feign的日志級(jí)別:
    • NONE【性能最佳,適用于生產(chǎn)】:不記錄任何日志(默認(rèn)值)。
    • BASIC【適用于生產(chǎn)環(huán)境追蹤問(wèn)題】:僅記錄請(qǐng)求方法、URL、響應(yīng)狀態(tài)代碼以及執(zhí)行時(shí)間。
    • HEADERS:記錄BASIC級(jí)別的基礎(chǔ)上,記錄請(qǐng)求和響應(yīng)的header。
    • FULL【比較適用于開(kāi)發(fā)及測(cè)試環(huán)境定位問(wèn)題】:記錄請(qǐng)求和響應(yīng)的header、body和元數(shù)據(jù)。

4.1.1 通過(guò)配置類(lèi)的方式進(jìn)行配置

  • 編寫(xiě)配置類(lèi):
    /*** 全局配置:如果使用了@Configuration注解,將會(huì)對(duì)所有的服務(wù)提供方都執(zhí)行該配置* 局部配置:*      1、如果想針對(duì)某一個(gè)服務(wù)進(jìn)行配置,就不要加@Configuration注解*      2、通過(guò)配置文件進(jìn)行配置*/@Configuration
    public class FeignConfig {/*** 設(shè)置feign的日志級(jí)別* @return*/@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.BASIC;}}
    
  • 讓調(diào)用的服務(wù)使用指定的Feign配置
    注意點(diǎn)
  • 修改yml配置文件中(默認(rèn)是info)的日志級(jí)別,因?yàn)閒eign的日志級(jí)別是debug。
    # SpringBoot默認(rèn)的日志級(jí)別是info,feign的日志級(jí)別是debug
    logging:level:root: infocom.example.order.feign: debug # 設(shè)置feign服務(wù)所在包下的日志級(jí)別
    

4.1.2 在配置文件中進(jìn)行配置

  • 對(duì)應(yīng)屬性配置類(lèi): org.springframework.cloud.openfeign.FeignClientProperties.FeignClientConfiguration
    # Feign日志局部配置
    feign:client:config:StockService:  # 對(duì)應(yīng)的服務(wù)名稱loggerLevel: FULL # 設(shè)置日志級(jí)別
    

4.2 超時(shí)配置

  • 配置類(lèi)
@Configuration
public class FeignConfig {/*** 設(shè)置feign請(qǐng)求超時(shí)時(shí)間* @return*/@Beanpublic Request.Options options(){return new Request.Options(5000, 5000);}
  • 配置文件
feign:client:config:StockService:  # 對(duì)應(yīng)的服務(wù)名稱loggerLevel: FULL # 設(shè)置日志級(jí)別connect-timeout: 5000 # 設(shè)置連接超時(shí)時(shí)間 默認(rèn)2000(2秒)read-timeout: 3000 # 設(shè)置讀取超時(shí)時(shí)間 默認(rèn)5秒

4.3 自定義攔截器

  • 自定義攔截器實(shí)現(xiàn)認(rèn)證邏輯(只有請(qǐng)求攔截,沒(méi)有響應(yīng)攔截)
public class FeignInterceptor implements RequestInterceptor {Logger logger = LoggerFactory.getLogger(FeignInterceptor.class);@Overridepublic void apply(RequestTemplate requestTemplate) {requestTemplate.header("token","123456789");requestTemplate.query("id","111");logger.info("feign攔截器");}
}
  • 在配置類(lèi)中進(jìn)行配置
@Configuration
public class FeignConfig {/*** 自定義攔截器* @return*/@Beanpublic FeignInterceptor feignInterceptor(){return new FeignInterceptor();}
  • 在配置文件中進(jìn)行配置
feign:client:config:StockService:  # 對(duì)應(yīng)的服務(wù)名稱requestInterceptors[0]: #攔截器配置com.example.order.interceptor.FeignInterceptor
http://aloenet.com.cn/news/43849.html

相關(guān)文章:

  • 在百度網(wǎng)站備案查詢上顯示未備案是什么意思網(wǎng)頁(yè)設(shè)計(jì)素材
  • 所有政府網(wǎng)站必須做等保嗎sem運(yùn)營(yíng)是什么意思
  • 政務(wù)服務(wù) 網(wǎng)站 建設(shè)方案朋友圈推廣平臺(tái)
  • 網(wǎng)站收錄低的原因百度云網(wǎng)頁(yè)版登錄入口
  • 住房城鄉(xiāng)建設(shè)部辦公廳網(wǎng)站口碑營(yíng)銷(xiāo)公司
  • 番禺區(qū)網(wǎng)站設(shè)計(jì)線上推廣的方式有哪些
  • 關(guān)于做美食的小視頻網(wǎng)站晚上免費(fèi)b站軟件
  • 石家莊個(gè)人誰(shuí)做網(wǎng)站廈門(mén)百度關(guān)鍵詞推廣
  • 網(wǎng)站優(yōu)化怎樣做網(wǎng)絡(luò)營(yíng)銷(xiāo)整合推廣
  • 個(gè)人工作室可以做哪些項(xiàng)目win優(yōu)化大師怎么樣
  • 北京網(wǎng)站建設(shè)招聘網(wǎng)站域名查詢系統(tǒng)
  • wordpress 刪除略縮圖關(guān)鍵詞seo優(yōu)化公司
  • 做旅游銷(xiāo)售網(wǎng)站平臺(tái)ppt模板網(wǎng)頁(yè)設(shè)計(jì)的流程
  • 網(wǎng)站頁(yè)面小圖標(biāo)怎么做深圳優(yōu)化公司排名
  • 晾衣架 東莞網(wǎng)站建設(shè)百度一下點(diǎn)擊搜索
  • 關(guān)于優(yōu)化網(wǎng)站建設(shè)的方案怎么可以在百度發(fā)布信息
  • 泰州網(wǎng)站制作案例上海專(zhuān)業(yè)做網(wǎng)站
  • 有必要自建網(wǎng)站做導(dǎo)購(gòu)嗎怎么給自己的網(wǎng)站設(shè)置關(guān)鍵詞
  • 陶瓷網(wǎng)站模板下載新浪體育最新消息
  • 怎樣推廣網(wǎng)站網(wǎng)絡(luò)廣告營(yíng)銷(xiāo)
  • 動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教程seo怎么刷排名
  • 網(wǎng)站用wordpress還是wp網(wǎng)址大全瀏覽器
  • 中國(guó)建設(shè)銀行網(wǎng)站濟(jì)南網(wǎng)點(diǎn)品牌軟文
  • 怎么在電腦上自己做網(wǎng)站如何做網(wǎng)站推廣的策略
  • 美發(fā)網(wǎng)站怎么做商品關(guān)鍵詞舉例
  • 企業(yè)建設(shè)網(wǎng)站應(yīng)該一般多少錢(qián)谷歌搜索優(yōu)化seo
  • 好的網(wǎng)站模板快速建網(wǎng)站
  • 網(wǎng)站建設(shè)風(fēng)格要求巨量引擎app
  • 聊城網(wǎng)站建設(shè)基本流程java培訓(xùn)學(xué)費(fèi)多少錢(qián)
  • 長(zhǎng)沙建設(shè)網(wǎng)站企業(yè)蘋(píng)果自研搜索引擎或?yàn)樘娲雀?/a>