在雅司病中路由

时间:2013-12-08 17:35:22

标签: erlang yaws

怎么能在雅司病中做路由?就像在ASP.NET MVC或Rails中路由一样。

当然,Erlang是一种功能性语言,没有oo世界的概念;但是有人可以通过http:// [domain]。[com] / controller / action / arg1 / arg2 /作为对具有'action / 2'功能的名为'controller'的模块的GET请求(或者已经存在这样的LIB)。

2 个答案:

答案 0 :(得分:4)

Yaws提供了几种方法:

  1. 在路径“/”上注册appmodshown in this answer,但正如提示中的问题一样,此方法不允许您删除网址上的“.yaws”后缀
  2. 使用重写模块,shown in section 7.1.2 of the Yaws PDF documentation。这将允许您的客户使用没有“.yaws”后缀的URL - 您的重写模块可以在需要的地方添加它们。
  3. 将调度模块用作described on page 52 of the Yaws PDF documentation。请注意,这种方法绕过了许多有用的Yaws调度机制,包括.yaws页面的处理,所以只有当你真的真的知道你正在做什么时才使用它。
  4. 在这3个选项中,我认为重写模块是解决这一特定问题的最佳模块。

答案 1 :(得分: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).

有一些错误处理等等。顺便说一句,如何被黑客入侵的好方法。