tio-boot 添加 HttpRequestHandler
tio-boot 支持的两种组件最 http 请求进行处理
- handler
- controller
注意
- 1.handler 的优先级高于 controller
- 2.handler 不支持参数封装,只能接受形参 HttpRequest,返回 HttpResponse
- 3.handler 在性能上优于 tio-boot controller
添加 handler
使用非 Aop 方式添加
步骤 1:创建 Handler 类
首先,创建一个名为 HelloRequestHandler
的类,它包含了两个处理 HTTP 请求的方法。每个方法接收一个 HttpRequest
对象,并返回一个 HttpResponse
对象。例如:
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.tio.http.server.util.Resps;
public class HelloRequestHandler {
public HttpResponse hello(HttpRequest httpRequest) {
return Resps.txt(httpRequest, "hello");
}
public HttpResponse hi(HttpRequest httpRequest) {
return Resps.txt(httpRequest, "hi");
}
}
在这个例子中,hello
方法返回文本 "hello",而 hi
方法返回文本 "hi"。
步骤 2:定义并配置 HttpRoutes
接下来,定义一个配置类 HttpServerRequestHanlderConfig
。在这个类中,你将实例化 SimpleHttpRoutes
并添加自定义路由。
- 使用
@BeforeStartConfiguration
注解标记这个配置类,这样框架会在启动前加载它。 - 通过
@Initialization
注解定义一个 初始化方法 - 在这个方法中,首先通过
Aop.get
方法获取HelloRequestHandler
的实例。然后,创建一个SimpleHttpRoutes
实例,并使用add
方法添加路由。 - TioBootServer 中默认的 SimpleHttpRoutes 值为 null,所以需要通过外部进行设置
import com.litongjava.tio.boot.server.TioBootServer;
import com.litongjava.tio.http.server.router.HttpReqeustSimpleHandlerRoute;
public class HttpRequestHanlderConfig {
public void config() {
// 获取router
HttpReqeustSimpleHandlerRoute r = TioBootServer.me().getHttpReqeustSimpleHandlerRoute();
// 创建handler
HelloRequestHandler HelloRequestHandler = new HelloRequestHandler();
// 添加action
r.add("/hi", HelloRequestHandler::hi);
r.add("/hello", HelloRequestHandler::hello);
}
}
3.添加到配置类
import com.litongjava.tio.boot.context.TioBootConfiguration;
public class AppConfig implements TioBootConfiguration {
@Override
public void config() {
new HttpRequestHanlderConfig().config();
}
}
4. 使用启动类启动
import com.litongjava.tio.boot.TioApplication;
public class HelloApp {
public static void main(String[] args) {
long start = System.currentTimeMillis();
TioApplication.run(HelloApp.class, new AppConfig(), args);
long end = System.currentTimeMillis();
System.out.println((end - start) + "ms");
}
}
在上述配置中,/hi
路由映射到 HelloRequestHandler
的 hi
方法,而 /hello
路由映射到 hello
方法。
使用 Aop 方式添加
import com.enoleap.manglang.pen.api.server.handler.VersionHandler;
import com.litongjava.jfinal.aop.annotation.AConfiguration;
import com.litongjava.jfinal.aop.annotation.AInitialization;
import com.litongjava.tio.boot.server.TioBootServer;
import com.litongjava.tio.http.server.router.HttpReqeustSimpleHandlerRoute;
@AConfiguration
public class HttpRequestHanlderConfig {
@Initialization
public void config() {
HttpReqeustSimpleHandlerRoute r = TioBootServer.me().getHttpReqeustSimpleHandlerRoute();
VersionHandler versionHandler = new VersionHandler();
// 添加action
r.add("/version", versionHandler::version);
}
}