成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我愛說實話,Mica-Http 超好用!

開發(fā) 前端
mica-http 是基于 okhttp 的封裝,提供了 Fluent 語法的 http 工具包。mica-http 的語法簡單易懂,同時還具有更好的性能和更高的安全性(自動關(guān)閉資源)。另外 mica-http 帶有 http 請求日志打印功能。

一、簡介

mica-http 是基于 okhttp 的封裝,提供了 Fluent 語法的 http 工具包。mica-http 的語法簡單易懂,同時還具有更好的性能和更高的安全性(自動關(guān)閉資源)。另外 mica-http 帶有 http 請求日志打印功能,

二、快速上手

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),日志級別默認(rèn)為 BODY
 .execute()   // 執(zhí)行,這里并非正在執(zhí)行,這里只是轉(zhuǎn)換成了執(zhí)行對象
 .asString();     // 真正行并轉(zhuǎn)換結(jié)果
System.out.println(html);

1.3 異步請求

// 發(fā)送異步請求
HttpRequest.delete("https://www.baidu.com")
    .async() // 開啟異步
    .onFailed((request, e) -> {    // 異常時的處理
        e.printStackTrace();
    })
    .onResponse(responseSpec -> {  // 消費響應(yīng), 注意:響應(yīng)的流只能讀一次
        int httpCode = responseSpec.code();

    })
    .onSuccessful(responseSpec -> { // 消費響應(yīng)成功 http code in [200..300)
        // 注意:響應(yīng)結(jié)果流只能讀一次
        JsonNode jsonNode = responseSpec.asJsonNode();
    })
    .execute(); // 異步最后發(fā)起請求

1.4 API說明

// 同步請求 url,方法支持 get、post、patch、put、delete
HttpRequest.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 請求參數(shù),默認(rèn)進(jìn)行 url encode
    .query("q", "mica") 
 .queryEncoded("name", "encodedValue")
    // 對結(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ā)起請求
 .execute()
    // 結(jié)果集轉(zhuǎn)換,注:如果網(wǎng)絡(luò)異常等會直接拋出異常,當(dāng)然你還可以使用 onResponse、onSuccess 處理
 .asJsonNode();
// 同類的方法有 asString、asBytes
// json 類響應(yīng):asJsonNode、asValue、asList、asMap、atJsonPath等,采用 jackson 處理
// file 文件:toFile
// 轉(zhuǎn)換成文件上傳的 Part:asPart 系列方法。

1.5 全局配置

全局日志配置:

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

自定義 OkHttpClient

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

1.6 Cookie管理

默認(rèn)內(nèi)置了 InMemoryCookieManager,會自動保存和使用 cookie,另外可以自定義實現(xiàn) okhttp 的 CookieJar。

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

三、性能優(yōu)異

http 壓測結(jié)果報告

第一輪

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

第二輪

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

第三輪

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

解讀

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

四、安全

mica-http 在執(zhí)行時會使用 try-with-resource語法自動關(guān)流,所以在使用時不用擔(dān)心流關(guān)閉問題。

責(zé)任編輯:武曉燕 來源: JAVA架構(gòu)日記
相關(guān)推薦

2020-12-08 10:25:56

HibernateMyBatis數(shù)據(jù)庫

2022-08-03 13:56:10

互聯(lián)網(wǎng)跳槽

2024-07-09 10:20:05

VueJSX函數(shù)

2023-04-14 07:49:26

iOS安卓

2021-12-30 10:28:22

鴻蒙HarmonyOS應(yīng)用

2024-04-28 12:47:03

數(shù)據(jù)業(yè)務(wù)

2025-02-11 08:27:11

2024-07-22 08:16:15

2021-04-29 08:27:06

druidundertowMetrics

2020-10-13 08:10:33

Exa命令工具

2023-12-05 13:27:00

Jackson語法

2020-08-12 09:35:23

Docker工具開源

2020-11-12 10:00:56

Kubernetes工具Linux

2021-05-10 07:35:11

SwaggeYApi部署

2018-03-12 11:52:44

2020-01-30 17:58:56

GitHub代碼開發(fā)者

2023-03-16 12:14:55

2021-05-28 09:51:32

開源技術(shù) 工具

2019-07-02 10:15:42

Windows 10

2024-01-22 13:15:00

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品久久 | 亚洲午夜av久久乱码 | 日本亚洲欧美 | 精品一区免费 | 国产精品一级 | 欧美一级三级 | 成人在线一区二区 | 91av在线免费 | 欧美成人一区二区三区片免费 | 在线观看国产三级 | 久久久久国产精品 | 亚洲一区二区三区桃乃木香奈 | 看片wwwwwwwwwww | 日日骚av | 日韩 欧美 综合 | 天堂综合 | 九九视频在线观看视频6 | 在线高清免费观看视频 | 国产第1页| 日本欧美在线观看视频 | 视频在线亚洲 | 2022精品国偷自产免费观看 | 人人人干 | 日韩精品免费看 | 亚洲精品久久久久久一区二区 | 亚洲三级在线观看 | 国产三级精品三级在线观看四季网 | 成人午夜免费网站 | 91色网站| 你懂的在线视频播放 | 日韩欧美亚洲 | 99精品视频在线 | 日韩成人久久 | 日韩成人在线观看 | 欧美一级大片免费看 | 极品电影院 | 男人天堂网址 | 日韩欧美一级片 | 国产精品网页 | 日韩免费av一区二区 | 国产精品第2页 |