All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.noear.solon.core.route.Router Maven / Gradle / Ivy
package org.noear.solon.core.route;
import org.noear.solon.core.handle.Endpoint;
import org.noear.solon.core.message.Listener;
import org.noear.solon.core.message.Session;
import org.noear.solon.core.handle.MethodType;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Handler;
import java.util.*;
/**
* 通用路由器
*
*
* public class DemoApp{
* public static void main(String[] args){
* Solon.start(DemoApp.class, args,app->{
* //
* //路由手写模式
* //
* app.get("/hello/*",c->coutput("heollo world;"));
* });
* }
* }
*
* //
* //容器自动模式
* //
* @Controller
* public class HelloController{
* @Mapping("/hello/*")
* public String hello(){
* return "heollo world;";
* }
* }
*
*
* @author noear
* @since 1.0
* */
public interface Router {
/**
* 添加路由关系 for Handler
*
* @param path 路径
* @param handler 处理接口
*/
default void add(String path, Handler handler) {
add(path, Endpoint.main, MethodType.HTTP, handler);
}
/**
* 添加路由关系 for Handler
*
* @param path 路径
* @param endpoint 处理点
* @param method 方法
* @param handler 处理接口
*/
default void add(String path, Endpoint endpoint, MethodType method, Handler handler) {
add(path, endpoint, method, 0, handler);
}
/**
* 添加路由关系 for Handler
*
* @param path 路径
* @param endpoint 处理点
* @param method 方法
* @param index 顺序位
* @param handler 处理接口
*/
void add(String path, Endpoint endpoint, MethodType method, int index, Handler handler);
/**
* 获取某个处理点的所有路由记录
*
* @param endpoint 处理点
* @return 处理点的所有路由记录
* */
List> getAll(Endpoint endpoint);
/**
* 区配一个处理(根据上下文)
*
* @param ctx 上下文
* @param endpoint 处理点
* @return 一个匹配的处理
*/
Handler matchOne(Context ctx, Endpoint endpoint);
/**
* 区配多个处理(根据上下文)
*
* @param ctx 上下文
* @param endpoint 处理点
* @return 一批匹配的处理
*/
List matchAll(Context ctx, Endpoint endpoint);
/////////////////// for Listener ///////////////////
/**
* 添加路由关系 for Listener
*
* @param path 路径
* @param listener 监听接口
*/
default void add(String path, Listener listener) {
add(path, MethodType.ALL, listener);
}
/**
* 添加路由关系 for Listener
*
* @param path 路径
* @param method 方法
* @param listener 监听接口
*/
default void add(String path, MethodType method, Listener listener) {
add(path, method, 0, listener);
}
/**
* 添加路由关系 for Listener
*
* @param path 路径
* @param method 方法
* @param index 顺序位
* @param listener 监听接口
*/
void add(String path, MethodType method, int index, Listener listener);
/**
* 区配一个目标(根据上下文)
*
* @param session 会话对象
* @return 首个匹配监听
*/
Listener matchOne(Session session);
/**
* 清空路由关系
*/
void clear();
}