[NETTY]: сопоставление URL-адреса с методом

Я использую netty и пытаюсь реализовать простой HTTP-сервер для некоторого API. Пока у меня есть входящие запросы, я могу получить путь 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...

Любое решение по этому поводу?

Но спасибо, что не поленились, ради этого вопроса почитайте доки. И извините за мой английский


person user1190420    schedule 03.05.2012    source источник


Ответы (1)


Я смотрю на Пример 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());

}

Надеюсь это поможет.

person Veebs    schedule 04.05.2012