Erlang 雅司路

Erlang 雅司路,erlang,yaws,Erlang,Yaws,如何在雅司病中进行路由?类似于ASP.NET MVC或Rails中的路由 当然,Erlang是一种没有oo世界概念的函数式语言;但是可以将http://[domain].[com]/controller/action/arg1/arg2/路由为对名为“controller”的模块的GET请求,该模块具有“action/2”函数,或者已经存在这样的库。我不知道是否存在这样的模块,但我看不到模块这样做的好处: out(Arg) -> Uri = yaws_api:request_url

如何在雅司病中进行路由?类似于ASP.NET MVC或Rails中的路由


当然,Erlang是一种没有oo世界概念的函数式语言;但是可以将http://[domain].[com]/controller/action/arg1/arg2/路由为对名为“controller”的模块的GET请求,该模块具有“action/2”函数,或者已经存在这样的库。

我不知道是否存在这样的模块,但我看不到模块这样做的好处:

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).

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

我不知道是否有这样的模块,但我不认为这样做有什么好处:

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).

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

Yaws提供了几种方法:

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).
在路径/as上注册一个appmod,但正如那里的问题所提示的那样,这种方法不允许您去掉URL上的.yaws后缀。 使用重写模块,如图所示。这将允许您的客户端使用不带.yaws后缀的URL—您的重写模块可以在需要时将它们添加回URL。 将调度模块用作。请注意,尽管这种方法绕过了许多有用的Yaws调度机制,包括处理.Yaws页面,但只有在您真正了解自己在做什么时才使用它。
在这三种选择中,我认为“重写”模块是解决此特定问题的最佳选择。

Yaws提供了几种方法:

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).
在路径/as上注册一个appmod,但正如那里的问题所提示的那样,这种方法不允许您去掉URL上的.yaws后缀。 使用重写模块,如图所示。这将允许您的客户端使用不带.yaws后缀的URL—您的重写模块可以在需要时将它们添加回URL。 将调度模块用作。请注意,尽管这种方法绕过了许多有用的Yaws调度机制,包括处理.Yaws页面,但只有在您真正了解自己在做什么时才使用它。
在这三种选择中,我认为“重写”模块是解决这一特定问题的最佳选择。

你说得对。那么,有没有办法摆脱路径中到处都是的[…]yaws?我认为yaws文档在这里应该很有用。你是对的。那么,有没有一种方法可以消除路径中随处可见的[…]yaws?我认为yaws文档应该在这里有所帮助。