1

我正在使用 netty 并尝试为某些 API 实现一个简单的 HTTP 服务器。当我有传入请求时,我可以获得 url = /foo/bar/other/ 的路径。如何将路径映射到以下内容?

class = foo 
method = bar 
param = other

我可以使用正则表达式吗?还是有更好的解决方案?


是的,我知道如何拆分 url 路径并获取查询字符串参数。我从 http 标头、ip 等中获取所有参数……这没问题。问题是,如何将这些路径映射到类和方法。这样我就可以带来所需的类和方法。

简单实现一些(只是伪代码):

public class Mapper {
    private String htttpMethod;
    private String controllerName;
    private String methodName;
}

ArrayList<Mapper> m = new ArrayList<Mapper>();
m.add(new Mapper("GET","HomeController","index"));

所以 /Home/index/1/ 必须升 HomeController.index(1);

对于我想找到的每个模式,我需要一个新的正则表达式吗?检查所有,是否会出现太多 if / else 块...

有什么解决办法吗?

但是感谢您不要太懒,为了这个问题,请阅读码头。对不起我的英语

4

1 回答 1

0

我发现查看Netty Snoop 示例会有所帮助。

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
    HttpRequest request = this.request = (HttpRequest) e.getMessage();

    // Get your path
    String uri = request.getUri();
    String[] segments = uri.split("/");
    String className = segments[0];
    String methodName = segments[1];

    // Get your query string parameters
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());

}

希望这可以帮助。

于 2012-05-04T00:03:27.677 回答