Tio-boot手动添加路由

### 手动添加路由到 Tio-boot

Tio-boot 框架提供了一种简单高效的方式来处理 HTTP 路由。虽然框架默认会自动扫描并添加带有 `@RequestPath` 注解的 Controller 到路由中,但在某些情况下,你可能需要手动添加路由。这可以通过实例化 `SimpleHttpRoutes` 类并向其中添加路由来实现。值得注意的是,

1.手动添加的路由将拥有比默认 `TioBootHttpRoutes` 更高的优先级。

2.手动添加路由不支持参数封装

#### 步骤 1:创建 Controller 类

首先,创建一个名为 `HelloController` 的类,它包含了两个处理 HTTP 请求的方法。每个方法接收一个 `HttpRequest` 对象,并返回一个 `HttpResponse` 对象。例如:

```java

package com.litongjava.ai.chat.controller;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.tio.http.server.util.Resps;
public class HelloController {
  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

接下来,定义一个配置类 `DefineHttpRoutesConfig`。在这个类中,你将实例化 `SimpleHttpRoutes` 并添加自定义路由。

使用 `@BeforeStartConfiguration` 注解标记这个配置类,这样框架会在启动前加载它。通过 `@Bean` 注解定义一个 `HttpRoutes` 类型的方法 `httpRoutes`。在这个方法中,首先通过 `Aop.get` 方法获取 `HelloController` 的实例。然后,创建一个 `SimpleHttpRoutes` 实例,并使用 `add` 方法添加路由。


```java

package com.litongjava.ai.chat.config;
import com.litongjava.ai.chat.controller.HelloController;
import com.litongjava.jfinal.aop.Aop;
import com.litongjava.jfinal.aop.annotation.Bean;
import com.litongjava.jfinal.aop.annotation.BeforeStartConfiguration;
import com.litongjava.tio.http.server.handler.HttpRoutes;
import com.litongjava.tio.http.server.handler.SimpleHttpRoutes;
@BeforeStartConfiguration
public class DefineHttpRoutesConfig {
  @Bean
  public HttpRoutes httpRoutes() {
    HelloController helloController = Aop.get(HelloController.class);
    HttpRoutes simpleHttpRoutes = new SimpleHttpRoutes();
    simpleHttpRoutes.add("/hi", helloController::hi);
    simpleHttpRoutes.add("/hello", helloController::hello);
    return simpleHttpRoutes;
  }
}

```

在上述配置中,`/hi` 路由映射到 `HelloController` 的 `hi` 方法,而 `/hello` 路由映射到 `hello` 方法。


评论区

热门分享

扫码入社