Solon 3.0 新特性:HttpUtils 了解一下

news/2024/10/22 14:39:48/
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/news/1541078.html

相关文章

Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch

目录 一、引言二、Redis Search 2.x版本的性能提升三、Redis Search VS. MongoDB VS. ElasticSearch3.1 测试环境3.2 100%写 - 基准测试3.3 100%读 - 基准测试3.4 混合读/写/搜索 - 基准测试2.5 搜索延迟分析3.6 读延迟分析3.7 写延迟分析3.8 Redis Search VS. ElasticSearch3.…

程序员的浪漫之给对象爬数据,没想到过程中竟然被写接口的老哥字段命名给秀到了!

目录 一、序言二、分析需求三、找数据分析字段四、建个表开爬数据五、结语 一、序言 最近对象转了销售岗&#xff0c;她的领导布置了项任务&#xff0c;一周要找500个对标客户的联系电话。看她又上天眼查、企查查、爱企查&#xff0c;还上各种采购平台手动抄采购负责人的信息和…

基于SSM机场网上订票系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;机票信息管理&#xff0c;订单信息管理&#xff0c;机场广告管理&#xff0c;系统管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;机票信息&#xf…

js 鼠标拖动canvas画布

功能点&#xff1a; 鼠标拖拽canvas画布移动鼠标检测rect鼠标检测circle 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-sc…

Rust编程语言变量的所有权(ownership)

文章目录 什么是所有权所有权规则转让所有权变量与数据交互的方式(一):移动变量与数据交互的方式(二):克隆只在栈上的数据:拷贝所有权与函数返回值与作用域引用和借用可变引用悬垂引用(Dangling References)引用的规则什么是所有权 所有权(ownership)是Rust 的核心功能之一…

ARAIM在航空领域的重要性及其面临的主要挑战

笔者这篇博客主要目的是总结目前ARAIM技术面临的主要问题&#xff0c;为做高级接收机自主完好性的小伙伴提供论文创新点思路。对于研究方向迷茫的小伙伴可以参考ARAIM目前存在的主要问题&#xff0c;展开相关研究&#xff0c;希望该博客对读者有所帮助。 1.全球卫星导航系统发…

Axure使用教程,产品经理如何用Axure制作一份高质量高保真的OA办公管理系统原型?附源文件下载

OA办公管理系统&#xff08;Office Automation Management System&#xff09;是通过现代计算机和通信技术&#xff0c;将办公过程中的信息、数据和流程进行自动化处理&#xff0c;以提高工作效率、降低成本的一套系统。构建OA办公管理系统涉及多个步骤&#xff0c;以下是一个概…

手写模拟Spring的基本功能

文章目录 1. Spring的基本功能2. 容器启动 容器启动&#xff0c;即创建容器对象并赋予配置对象3. BeanDefinition扫描4. Bean的生命周期5. 单例Bean与多例Bean6. 依赖注入7. AOP8. Aware 回调9. 初始化10. BeanPostProcessor附录&#xff1a; 1. Spring的基本功能 2. 容器启动 …