2013-12-08 27 views
3

如何在Yaws中路由?像ASP.NET MVC或Rails中的路由一樣。Yaws路由

當然Erlang是一種功能語言,沒有oo世界的概念;但是可以使用'action/2'函數將http:// [domain]。[com]/controller/action/arg1/arg2 /作爲GET請求傳遞給名爲'controller'的模塊(或者已經存在這樣的LIB)。

回答

5

雅司爲此提供了幾個方法:

  1. 註冊路徑「/」作爲shown in this answerappmod,但因爲有提示的問題,這種方法沒有讓你擺脫「.yaws」後綴在您的網址上。
  2. 使用重寫模塊,如shown in section 7.1.2 of the Yaws PDF documentation。這將允許您的客戶使用沒有「.yaws」後綴的網址—您的重寫模塊可以在需要時將它們添加回去。
  3. 使用調度模塊described on page 52 of the Yaws PDF documentation。請注意,這種方法繞過了很多有用的Yaws調度機器,包括處理.yaws頁面,所以只有在您真的確實知道您在做什麼時才使用它。

在這三種選擇中,我認爲重寫模塊是針對這個特定問題的最佳選擇。

0

我不知道是否有這樣的模塊,但我沒有看到這樣的模塊的好處:

out(Arg) -> 
    Uri = yaws_api:request_url(Arg), 
    Path = string:tokens(Uri#url.path, "/"), 
    Method = (Arg#arg.req)#http_request.method, 
    out(Arg, Method, Path). 

out(_Arg, 'GET', [Module, Function | Args]) -> 
    apply(Module, Function, Args). 

隨着一些錯誤處理等。順便說一句,好方法如何被黑客入侵。

+0

你說得對。那麼,有沒有辦法在路上到處擺脫「[...]雅各派」? –

+0

我認爲雅培文檔應該對這裏有幫助http://hyber.org/yapp_intro.yaws。 –