Solon 3.0 新特性:HttpUtils 了解一下

server/2024/10/22 6:38:22/
http://www.w3.org/2000/svg" style="display: none;">

Solon 3.0 引入一个叫 HttpUtils 小插件,这是一个简单的同步 HTTP 客户端,基于 URLConnection 适配(也支持切换为 OkHttp 适配)。使得编写 HTTP 客户端代码更加直观和易于阅读。

  • 使用 URLConnection 适配时(大小为 40KB 左右)。默认
  • 使用 OkHttp 适配时(大小为 3.1MB 左右)。当引入 okhttp 包时,自动切换为 okhttp 适配。

一、请求操作

  • HEAD 请求并返回 status code
java">int code = HttpUtils.http("http://localhost:8080/hello").head();
  • GET 请求并返回 body string
java">String body = HttpUtils.http("http://localhost:8080/hello").get();
  • GET 请求并返回 body as bean
java">//for Bean
Book book = HttpUtils.http("http://localhost:8080/book?bookId=1").getAs(Book.class);

二、提交操作

PUT、PATCH、DELETE 数据提交,与 POST 相同。

  • POST 请求并返回 body stirng (x-www-form-urlencoded)
java">//x-www-form-urlencoded
String body = HttpUtils.http("http://localhost:8080/hello").data("name","world").post();
  • POST 请求并返回 body stirng (form-data)
java">//form-data
String body = HttpUtils.http("http://localhost:8080/hello").data("name","world").post(true); // useMultipart//form-data :: upload-file
String body = HttpUtils.http("http://localhost:8080/hello").data("name", new File("/data/demo.jpg")).post(true); // useMultipart
  • POST 请求并返回 body stirng (body-raw)
java">//body-json
String body = HttpUtils.http("http://localhost:8080/hello").bodyOfJson("{\"name\":\"world\"}").post();
  • POST 请求并返回 body as bean (body-raw)
java">//for Bean
Result body = HttpUtils.http("http://localhost:8080/book").bodyOfBean(book) //会通过 serializer 指定 contentType;默认为 json serializer.postAs(Result.class);//for Bean generic type
Result<User> body = HttpUtils.http("http://localhost:8080/book").bodyOfBean(book).postAs(new Result<User>(){}.getClass()); //通过临时类构建泛型(或别的方式)

三、高级操作

获取完整的响应(用完要关闭)

java">try(HttpResponse resp = HttpUtils.http("http://localhost:8080/hello").data("name","world").exec("POST")) {int code = resp.code();String head = resp.header("Demo-Header");String body = resp.bodyAsString();Books body = resp.bodyAsBean(Books.class);
}

配置序列化器。默认为 json,比如改为 fury;或者自己定义。

java">FuryBytesSerializer serializer = new FuryBytesSerializer();Result body = HttpUtils.http("http://localhost:8080/book").serializer(serializer).bodyOfBean(book).postAs(Result.class);

四、总结

HttpUtils 的几个小优点:

  • 简单的 API。主要就是简单!也很小巧。
  • 支持自动序列化(使用了 solon serializer 接口规范;忆适配的序列化插件可直接用)
  • 支持泛型

http://www.ppmy.cn/server/133821.html

相关文章

RestHighLevelClient操作es查询文档

目录 利用RestHighLevelClient客户端操作es查询文档 查询match_all dsl语句&#xff1a; ​编辑 java代码 小结 match字段全文检索查询 dsl语句 java代码 multi_match多字段全文检索查询 dsl语句 java代码 term精确查询 dsl语句 java代码 range范围查询 dsl语句 j…

图片写入GPS经纬高信息

近期项目中需要往java平台传输图片&#xff0c;直接使用QNetworkAccessManager和QHttpMultipart类即可&#xff0c;其他博文中有分享。 主要是平台接口对所传输图片有要求&#xff1a;需要包含GPS信息&#xff08;经度、纬度、高度&#xff09;。 Qt无法直接实现&#xff0c;…

数据驱动时代:五款免费报表工具深度解析

在当今数据驱动的时代&#xff0c;报表工具已经成为各类企业进行决策和管理的重要工具。无论是大中型企业还是小微企业&#xff0c;能够快速、高效地生成可视化报表&#xff0c;洞察业务运营情况&#xff0c;已经成为提升竞争力的关键。今天为大家挑选了5款非常优秀的报表软件&…

STM32G4系列MCU的ADC模块标定方法和采样时间

目录 概述 1 ADC模块标定 1.1 功能介绍 1.2 软件程序校准ADC 1.2.1 标定步骤 1.2.2 标定时序框图 1.3 软件程序重新注入校准因子到ADC 1.3.1 标定步骤 1.3.2 更新ADC校准因子 1.4 用单个ADC转换单端和差分模拟输入 1.4.1 标定流程 1.4.2 混合单端和差分通道 2 通道…

WPF中的Style

Style介绍 在XAML中&#xff0c;Style是一个用于定义控件的默认属性值的资源。通过样式&#xff0c;你可以设置一组属性&#xff0c;这些属性将被应用到所有使用该样式的控件上。这有助于保持应用程序的一致性&#xff0c;并且可以减少重复的标记&#xff0c;使得UI的维护更加…

微信小程序canvas 生成二维码图片,画图片,生成图片,将两个canvas结合并保存图片

需求实现步骤如下 先定义两个canvas一个canvas myQrcode画二维码的图片另一个canvas mycanvas画一个背景图&#xff0c;并把二维码画到这个canvas上&#xff0c;mycanvas这个canvas生成一张图片&#xff0c;返回图片的临时路径最后保存图片到手机 首先wxml,新版微信小程序can…

大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

1.IDEA开发之子模块无法继承父模块的依赖

目录 1.1 出现的问题 1.2 父模块的Pom.xml配置文件 1.3 子模块的Pom.xml配置文件 1.4 思考&#xff1a;究竟哪里出现了问题&#xff1f; 1.1 出现的问题 在开发Spring引入数据库外部配置文件&#xff0c;发现我开发的父模块Spring以及子模块spring6-ioc-xml出现了无法…