文章目录
- 概述
- 官网
- Hserver的理念
- 特点
- 原理图
- 代码案例
- HelloWorld
概述
HServer是一个基于Netty开发网络扩展库.使用插件方式来扩展我们的业务 HServer提供 web,gateway,rpc 等插件 同时用户也可以自定义插件,来完成各种各样的业务场景。
官网
https://gitee.com/HServer/HServer
https://doc.hserver.top/#/
https://gitee.com/HServer
Hserver的理念
-
极简、高性能、扩展强
-
极简 代码只有几百KB
-
高性能 使用Netty网络库作为核心,比起传统的web容器性能高数十倍.
-
扩展强 预留了丰富的接口,以及netty直接自定义协议
特点
- 简便易用5分钟即可掌握使用
- 快速构建高效API
- TCP层上直接构建
- Restful风格路由设计
- Cron定时器
- Filter拦截器
- 持久Queue队列
- HOOK/AOP组件
- Track链路跟踪组件
- Web Socket功能
- Mqtt WebSocketMqtt功能
- 自定义协议
- Proxy 自由处理
- ApiDoc文档组件
- 权限组件
- Plugin组件自由扩展
- HUM消息
- 高性能
- 高度自由度控制
- 流量整形
- Netty 原生响应支持自己扩展
原理图
代码案例
HelloWorld
建立一个maven项目,导入依赖
<parent>
<artifactId>hserver-parent</artifactId>
<groupId>cn.hserver</groupId>
<version>最新版本</version>
</parent>
<dependencies>
<!-- 核心依赖-->
<dependency>
<artifactId>hserver</artifactId>
<groupId>cn.hserver</groupId>
</dependency>
<!-- web框架 -->
<dependency>
<artifactId>hserver-plugin-web</artifactId>
<groupId>cn.hserver</groupId>
</dependency>
</dependencies>
<!-- 打包jar -->
<build>
<plugins>
<plugin>
<artifactId>hserver-plugin-maven</artifactId>
<groupId>cn.hserver</groupId>
</plugin>
</plugins>
</build>
建立一个主函数
建立一个java包,如 com.test , 建立一个主函数
@HServerBoot
public class WebApp {
public static void main(String[] args) {
HServerApplication.run(WebApp.class, 8888, args);
}
}
建立一个控制器
@Controller
public class HelloController {
@GET("/test1")
public JsonResult test() {
return JsonResult.ok();
}
@POST("/test2")
public JsonResult b(HttpRequest request) {
return JsonResult.ok().put("data", request.getRequestParams());
}
@RequestMapping(value = "/get", method = RequestMethod.GET)
public JsonResult get() {
return JsonResult.ok();
}
@RequestMapping(value = "/post", method = RequestMethod.POST)
public JsonResult post(HttpRequest httpRequest) {
return JsonResult.ok().put("data", httpRequest.getRequestParams());
}
/**
* 模板测试
* @param httpResponse
*/
@GET("/template")
public void template(HttpResponse httpResponse) {
User user = new User();
user.setAge(20);
user.setName("xx");
user.setSex("男");
Map<String, Object> obj = new HashMap<>();
obj.put("user", user);
// httpResponse.sendTemplate("/admin/user/list.ftl", obj);
httpResponse.sendTemplate("a.ftl", obj);
}
}
运行主函数,访问8888端口即可