1、smart-http 简介
smart-http 是一款可编程式 HTTP 应用微内核。它是目前市面上为数不多即能严格准守 RFC2616 规范,又兼顾卓越性能的 Http 服务器。
smart-http 建立在自研的通信框架 smart-socket 之上,使其有着纯正的国产化血统。该项目对标的是 nginx,高性能、轻量化是其追求和坚持的目标。
模块介绍
模块 | 说明 | 代码量 |
---|---|---|
smart-http-common | 基础通用模块,包括枚举、日志、工具类 | 2300+ |
smart-http-client | HTTP Client编解码和响应式编程设计 | 1400+ |
smart-http-server | HTTP Server和WebSocket的编解码和应用层接口设计 | 2800+ |
smart-http-restful | 基于smart-http-server的简易版 MVC模块(实验性) | 680 |
smart-http-restful-mybatis | 类似mybatis-spring(实验性) | 25 |
smart-http-test | 单测模块 | 1600+ |
2、 版本更新
Maven
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-server</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-client</artifactId> <version>1.3.0</version> </dependency>
本次更新内容:
-
改进 HttpClient 的 chunked 判定依据。
-
移除默认的 gzip 适配,改由用户自主编码实现。
-
新增 smart-http-restful-mybatis 模块,支持 Mapper 的 Bean 实例化注入。
-
smart-http-restufl 支持自定义注解的 Bean 实例化。
-
smart-http-restufl 支持反序列化 JSON 数组的请求体。
-
优化 Http 服务异常响应处理逻辑。
-
新增单元测试用例。
-
smart-socket 升级至 1.5.33
3、快速上手
3.1 HTTP 服务端
public class SimpleSmartHttp { public static void main(String[] args) { HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.httpHandler(new HttpServerHandler() { @Override public void handle(HttpRequest request, HttpResponse response) throws IOException { response.write("hello smart-http<br/>".getBytes()); } }).setPort(8080).start(); } }
3.2 WebSocket 服务端
public class WebSocketDemo { public static void main(String[] args) { //1. 实例化路由Handle WebSocketRouteHandler routeHandle = new WebSocketRouteHandler(); //2. 指定路由规则以及请求的处理实现 routeHandle.route("/", new WebSocketDefaultHandler() { @Override public void handleTextMessage(WebSocketRequest request, WebSocketResponse response, String data) { response.sendTextMessage("接受到客户端消息:" + data); } }); // 3. 启动服务 HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.webSocketHandler(routeHandle); bootstrap.start(); } }
3.3 Http 客户端
public class HttpGetDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("www.baidu.com", 80); httpClient.get("/").header().keepalive(false).done() .onSuccess(response -> System.out.println(response.body())) .onFailure(Throwable::printStackTrace) .done(); } }
3.4 Restful
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-restful</artifactId> <version>${smarthttp.version}</version> </dependency>
@Controller public class RestfulDemo { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String helloworld() { return "hello world"; } public static void main(String[] args) throws Exception { RestfulBootstrap bootstrap = RestfulBootstrap.getInstance().controller(RestfulDemo.class); bootstrap.bootstrap().setPort(8080).start(); } }
smartboot 开源组织,一个容易被误认为是在 “重复造轮子” 的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。
该组织内的明星项目包括:
smart-socket
历时 5 年精炼出 2 千多行代码,轻松实现百万级长连接的 AIO 通信框架。smart-http
基于 smart-socket 实现的 HTTP/1.1 web 服务。smart-servlet
基于 smart-http 实现的 Servlet 3.1 容器服务。smart-mqtt
基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。smart-flow
一款具备可观测性的轻量级业务编排框架。组织地址:https://smartboot.tech/
代码仓库:https://gitee.com/smartboot
还没有评论,来说两句吧...