Java 如何在Netty中基于URI路由请求?
我是Netty的新手,为了更熟悉它,我正在构建一个简单的HTTP服务器。我想做的一件事是处理基于URI的路由。我四处寻找例子,找到了一些方法,想看看哪种方法最有意义Java 如何在Netty中基于URI路由请求?,java,netty,Java,Netty,我是Netty的新手,为了更熟悉它,我正在构建一个简单的HTTP服务器。我想做的一件事是处理基于URI的路由。我四处寻找例子,找到了一些方法,想看看哪种方法最有意义 拥有一个“路由”处理程序,该处理程序将根据HTTPMessage中的URI添加/删除其他处理程序。如果我必须为每一个请求都这样做,那么这似乎效率低下 让“路由”处理程序将HTTPMessage和HTTPContent包装在另一个对象中,然后将其传递给相应的处理程序。例如,我可以有一个扩展SimpleChannelInboundHan
PS-我正在使用Netty 4.0,我的大部分理解来自各种在线研究和阅读Netty In Action图书。我使用一个固定管道,它只负责解码/编码请求/响应(以及可选的聚合、压缩、静态头等) 管道中的最后一个处理程序传递给一个可配置的RequestResolver(支持HTTP以外的类型的泛型),它看起来有点像:
public interface RequestResolver<T> {
void execute(@Nonnull ChannelHandlerContext ctx, @Nonnull T req);
}
公共接口请求解析程序{
void execute(@Nonnull ChannelHandlerContext ctx,@Nonnull T req);
}
请求解析器负责决定如何处理请求(如有必要,路由),通常会传递到已在其上注册的一个或多个操作,或返回404。它与管道没有太多关系,只是需要一个ctx来排队响应
我从alpha-01开始使用Netty 4,当时没有路由框架插件,所以我用Java编写了自己的RequestResolver,最近,我在Clojure中写了另一篇文章,它重新使用了Compojure的Clout路由。感谢分享-这似乎与我列表中的#3最为相似,但肯定是一种更普遍的方法。你的实现是公开的吗?如果是的话,我很想看看。恐怕代码属于我的客户,而不是开源的。如果将来情况有所改变,我会告诉你的。