2012-05-03 5 views
0

으로 매핑합니다. netty를 사용 중이며 일부 API에 간단한 HTTP 서버를 구현하려고합니다. 수신 요청이있는 동안 url =/foo/bar/other /의 경로를 얻을 수 있습니다. 어떻게 경로를 다음과 같이 매핑 할 수 있습니까?[NETTY] : 메소드 urlpath를

class = foo 
method = bar 
param = other 

Regex를 사용할 수 있습니까? 아니면 더 나은 해결책이 있습니까?


예 저는 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")); 

을 따라서/홈/색인/1/HomeController.index 상승한다 (1);

각 패턴을 찾고 싶습니다. 새로운 정규 표현식이 필요합니까? 모두 확인하십시오. if/else 블록이 너무 많습니다 ...

그 해결책은 없나요?

하지만이 게으름에 감사드립니다.이 질문을 위해서 부두를 읽으십시오. 그리고 내 영어를 위해서 슬프다

답변

0

나는 Netty Snoop example가 도움이되는 것을 안다.

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()); 

} 

희망이 있습니다.

+0

너무 길기 때문에 편집 된 질문에서 답하십시오. – user1190420