日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

我愛說實(shí)話,Mica-Http 超好用!

來源: 責(zé)編: 時(shí)間:2024-01-26 09:00:14 206觀看
導(dǎo)讀一、簡介mica-http 是基于 okhttp 的封裝,提供了 Fluent 語法的 http 工具包。mica-http 的語法簡單易懂,同時(shí)還具有更好的性能和更高的安全性(自動(dòng)關(guān)閉資源)。另外 mica-http 帶有 http 請(qǐng)求日志打印功能,二、快速上手1.1

一、簡介

mica-http 是基于 okhttp 的封裝,提供了 Fluent 語法的 http 工具包。mica-http 的語法簡單易懂,同時(shí)還具有更好的性能和更高的安全性(自動(dòng)關(guān)閉資源)。另外 mica-http 帶有 http 請(qǐng)求日志打印功能,MYg28資訊網(wǎng)——每日最新資訊28at.com

二、快速上手

1.1 導(dǎo)入依賴

<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-http</artifactId> <version>2.7.18.1</version></dependency>

1.2 快速開始

String html = HttpRequest.get("https://www.baidu.com") .useConsoleLog() // 日志,同類有useSlf4jLog()和useLog(log::info),日志級(jí)別默認(rèn)為 BODY .execute()   // 執(zhí)行,這里并非正在執(zhí)行,這里只是轉(zhuǎn)換成了執(zhí)行對(duì)象 .asString();     // 真正行并轉(zhuǎn)換結(jié)果System.out.println(html);

1.3 異步請(qǐng)求

// 發(fā)送異步請(qǐng)求HttpRequest.delete("https://www.baidu.com")    .async() // 開啟異步    .onFailed((request, e) -> {    // 異常時(shí)的處理        e.printStackTrace();    })    .onResponse(responseSpec -> {  // 消費(fèi)響應(yīng), 注意:響應(yīng)的流只能讀一次        int httpCode = responseSpec.code();    })    .onSuccessful(responseSpec -> { // 消費(fèi)響應(yīng)成功 http code in [200..300)        // 注意:響應(yīng)結(jié)果流只能讀一次        JsonNode jsonNode = responseSpec.asJsonNode();    })    .execute(); // 異步最后發(fā)起請(qǐng)求

1.4 API說明

// 同步請(qǐng)求 url,方法支持 get、post、patch、put、deleteHttpRequest.get("https://www.baidu.com/{param1}/{param2}")    // 使用 Slf4j 日志 .useSlf4jLog()     // url 路徑參數(shù)處理 .pathParam("param1", "abc1")  .pathParam("param2", "abc2")    // 添加 header .addHeader("x-account-id", "mica001")     // 添加 cookie .addCookie(builder -> builder.domain("www.baidu.com").name("name").value("value"))  // 設(shè)置 url 請(qǐng)求參數(shù),默認(rèn)進(jìn)行 url encode    .query("q", "mica")  .queryEncoded("name", "encodedValue")    // 對(duì)結(jié)果集進(jìn)行斷言重試 .retryOn(responseSpec -> !responseSpec.isOk())     // 設(shè)置代理 .proxy(InetSocketAddress.createUnresolved("127.0.0.1", 8080))     // 表單構(gòu)造器,同類 multipartFormBuilder 文件上傳表單構(gòu)造器 .formBuilder()    // 表單參數(shù) .add("id", 123123)      // 發(fā)起請(qǐng)求 .execute()    // 結(jié)果集轉(zhuǎn)換,注:如果網(wǎng)絡(luò)異常等會(huì)直接拋出異常,當(dāng)然你還可以使用 onResponse、onSuccess 處理 .asJsonNode();// 同類的方法有 asString、asBytes// json 類響應(yīng):asJsonNode、asValue、asList、asMap、atJsonPath等,采用 jackson 處理// file 文件:toFile// 轉(zhuǎn)換成文件上傳的 Part:asPart 系列方法。

1.5 全局配置

全局日志配置:MYg28資訊網(wǎng)——每日最新資訊28at.com

// 設(shè)定全局日志級(jí)別 **NONE**(不打印日志)、 **BASIC**(只打印請(qǐng)求行和響應(yīng)行)、 **HEADERS**(在BASIC的基礎(chǔ)上打印出請(qǐng)求頭)、 **BODY**(在BASIC的基礎(chǔ)上打印出請(qǐng)求和響應(yīng)體)HttpRequest.setGlobalLog(LogLevel.BODY);// 設(shè)置控制臺(tái)日志,用于沒有日志依賴的 sdk 開發(fā)時(shí)使用HttpRequest.setGlobalLog(HttpLogger.Console, LogLevel.BODY);// 當(dāng)然你也可以設(shè)定為自己的 log,這樣就不用把 **net.dreamlu.mica.http** 包的日志設(shè)置為 info 級(jí)別。HttpRequest.setGlobalLog(log::info);

自定義 OkHttpClientMYg28資訊網(wǎng)——每日最新資訊28at.com

OkHttpClient httpClient = new OkHttpClient.Builder() .build();HttpRequest.setHttpClient(httpClient);

1.6 Cookie管理

默認(rèn)內(nèi)置了 InMemoryCookieManager,會(huì)自動(dòng)保存和使用 cookie,另外可以自定義實(shí)現(xiàn) okhttp 的 CookieJar。MYg28資訊網(wǎng)——每日最新資訊28at.com

InMemoryCookieManager cookieManager = new InMemoryCookieManager();HttpRequest.get("http://fast.dreamlu.net/api/auth/captcha") .cookieManager(cookieManager) .execute() .asString();

三、性能優(yōu)異

http 壓測結(jié)果報(bào)告MYg28資訊網(wǎng)——每日最新資訊28at.com

第一輪

Benchmark                           Mode  Cnt    Score     Error    UnitsMicaHttpBenchmark.micaHttp         thrpt    5  899.299 ± 208.080  ops/minMicaHttpBenchmark.okHttp           thrpt    5  841.669 ± 106.094  ops/minMicaHttpBenchmark.protoTypeOkHttp  thrpt    5  346.647 ±  23.664  ops/min

第二輪

Benchmark                           Mode  Cnt    Score     Error    UnitsMicaHttpBenchmark.micaHttp         thrpt    5  876.651 ± 276.569  ops/minMicaHttpBenchmark.okHttp           thrpt    5  899.365 ± 194.188  ops/minMicaHttpBenchmark.protoTypeOkHttp  thrpt    5  341.028 ±  34.713  ops/min

第三輪

Benchmark                           Mode  Cnt    Score     Error    UnitsMicaHttpBenchmark.micaHttp         thrpt    5  944.017 ± 175.509  ops/minMicaHttpBenchmark.okHttp           thrpt    5  875.143 ± 164.594  ops/minMicaHttpBenchmark.protoTypeOkHttp  thrpt    5  331.370 ±  19.136  ops/min

解讀

  • mica-http 對(duì) okhttp 進(jìn)行增強(qiáng)會(huì)復(fù)用OkHttpClient和連接池,并沒有明顯的性能損耗,偶爾結(jié)果還比 okhttp 表現(xiàn)得好。
  • protoTypeOkHttp 采用的是每次 new OkHttpClient() 性能損耗明顯非常明顯,而且高并發(fā)下還有內(nèi)存泄露,所以大家在使用時(shí)一定要注意。

四、安全

mica-http 在執(zhí)行時(shí)會(huì)使用 try-with-resource語法自動(dòng)關(guān)流,所以在使用時(shí)不用擔(dān)心流關(guān)閉問題。MYg28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-68320-0.html我愛說實(shí)話,Mica-Http 超好用!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 實(shí)戰(zhàn)與原理:如何基于RocketMQ實(shí)現(xiàn)分布式事務(wù)?

下一篇: 12個(gè)強(qiáng)大的 JavaScript 動(dòng)畫庫,可幫助你提升用戶體驗(yàn)

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 九龙城区| 达尔| 柳林县| 岳池县| 北安市| 潜山县| 汝南县| 天柱县| 祁阳县| 龙江县| 丽江市| 保康县| 望都县| 康马县| 漳平市| 阿拉尔市| 青铜峡市| 光泽县| 泰宁县| 和田县| 思茅市| 湘潭县| 芦山县| 安宁市| 民丰县| 上思县| 玉门市| 凤翔县| 茌平县| 招远市| 孟津县| 阿城市| 渭南市| 平阳县| 汾西县| 台安县| 黔西县| 诸暨市| 兰考县| 衡阳市| 米易县|