当前位置:首页 > 科技  > 软件

我爱说实话,Mica-Http 超好用!

来源: 责编: 时间:2024-01-26 09:00:14 305观看
导读一、简介mica-http 是基于 okhttp 的封装,提供了 Fluent 语法的 http 工具包。mica-http 的语法简单易懂,同时还具有更好的性能和更高的安全性(自动关闭资源)。另外 mica-http 带有 http 请求日志打印功能,二、快速上手1.1

一、简介

mica-http 是基于 okhttp 的封装,提供了 Fluent 语法的 http 工具包。mica-http 的语法简单易懂,同时还具有更好的性能和更高的安全性(自动关闭资源)。另外 mica-http 带有 http 请求日志打印功能,YYW28资讯网——每日最新资讯28at.com

二、快速上手

1.1 导入依赖

<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),日志级别默认为 BODY .execute()   // 执行,这里并非正在执行,这里只是转换成了执行对象 .asString();     // 真正行并转换结果System.out.println(html);

1.3 异步请求

// 发送异步请求HttpRequest.delete("https://www.baidu.com")    .async() // 开启异步    .onFailed((request, e) -> {    // 异常时的处理        e.printStackTrace();    })    .onResponse(responseSpec -> {  // 消费响应, 注意:响应的流只能读一次        int httpCode = responseSpec.code();    })    .onSuccessful(responseSpec -> { // 消费响应成功 http code in [200..300)        // 注意:响应结果流只能读一次        JsonNode jsonNode = responseSpec.asJsonNode();    })    .execute(); // 异步最后发起请求

1.4 API说明

// 同步请求 url,方法支持 get、post、patch、put、deleteHttpRequest.get("https://www.baidu.com/{param1}/{param2}")    // 使用 Slf4j 日志 .useSlf4jLog()     // url 路径参数处理 .pathParam("param1", "abc1")  .pathParam("param2", "abc2")    // 添加 header .addHeader("x-account-id", "mica001")     // 添加 cookie .addCookie(builder -> builder.domain("www.baidu.com").name("name").value("value"))  // 设置 url 请求参数,默认进行 url encode    .query("q", "mica")  .queryEncoded("name", "encodedValue")    // 对结果集进行断言重试 .retryOn(responseSpec -> !responseSpec.isOk())     // 设置代理 .proxy(InetSocketAddress.createUnresolved("127.0.0.1", 8080))     // 表单构造器,同类 multipartFormBuilder 文件上传表单构造器 .formBuilder()    // 表单参数 .add("id", 123123)      // 发起请求 .execute()    // 结果集转换,注:如果网络异常等会直接抛出异常,当然你还可以使用 onResponse、onSuccess 处理 .asJsonNode();// 同类的方法有 asString、asBytes// json 类响应:asJsonNode、asValue、asList、asMap、atJsonPath等,采用 jackson 处理// file 文件:toFile// 转换成文件上传的 Part:asPart 系列方法。

1.5 全局配置

全局日志配置:YYW28资讯网——每日最新资讯28at.com

// 设定全局日志级别 **NONE**(不打印日志)、 **BASIC**(只打印请求行和响应行)、 **HEADERS**(在BASIC的基础上打印出请求头)、 **BODY**(在BASIC的基础上打印出请求和响应体)HttpRequest.setGlobalLog(LogLevel.BODY);// 设置控制台日志,用于没有日志依赖的 sdk 开发时使用HttpRequest.setGlobalLog(HttpLogger.Console, LogLevel.BODY);// 当然你也可以设定为自己的 log,这样就不用把 **net.dreamlu.mica.http** 包的日志设置为 info 级别。HttpRequest.setGlobalLog(log::info);

自定义 OkHttpClientYYW28资讯网——每日最新资讯28at.com

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

1.6 Cookie管理

默认内置了 InMemoryCookieManager,会自动保存和使用 cookie,另外可以自定义实现 okhttp 的 CookieJar。YYW28资讯网——每日最新资讯28at.com

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

三、性能优异

http 压测结果报告YYW28资讯网——每日最新资讯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 对 okhttp 进行增强会复用OkHttpClient和连接池,并没有明显的性能损耗,偶尔结果还比 okhttp 表现得好。
  • protoTypeOkHttp 采用的是每次 new OkHttpClient() 性能损耗明显非常明显,而且高并发下还有内存泄露,所以大家在使用时一定要注意。

四、安全

mica-http 在执行时会使用 try-with-resource语法自动关流,所以在使用时不用担心流关闭问题。YYW28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-68320-0.html我爱说实话,Mica-Http 超好用!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 实战与原理:如何基于RocketMQ实现分布式事务?

下一篇: 12个强大的 JavaScript 动画库,可帮助你提升用户体验

标签:
  • 热门焦点
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • iQOO 11S或7月上市:搭载“鸡血版”骁龙8Gen2 史上最强5G Soc

    去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,iQOO 11不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞屏,同时在快充
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主&ldquo;七王&rdquo;在群里介绍一些刷单赚
Top