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 注解标记这个配置类,这样框架会在启动前加载它。
  • 通过 @AInitialization 注解定义一个 初始化方法
  • 在这个方法中,首先通过 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 路由映射到 HelloRequestHandlerhi 方法,而 /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 {

  @AInitialization
  public void config() {

    HttpReqeustSimpleHandlerRoute r = TioBootServer.me().getHttpReqeustSimpleHandlerRoute();

    VersionHandler versionHandler = new VersionHandler();

    // 添加action
    r.add("/version", versionHandler::version);

  }
}