2012-05-03 49 views
0

我使用網狀,並試圖執行一些API一個簡單的HTTP服務器。雖然我有傳入的請求,我可以得到url =/foo/bar/other /的路徑。我如何將路徑映射到以下內容?[網狀]:地圖urlpath到方法

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

所以/首頁/索引/ 1 /必須上升HomeController.index(1);

的,我想找到的每個模式,我需要一個新的正則表達式?檢查所有的,如果/ else塊將太多...

有關的任何解決方案?

但不是太懶惰的感謝,對這個問題的緣故閱讀碼頭。和SRY我的英語水平

回答

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