Yaws でルーティングを行うにはどうすればよいですか? ASP.NET MVC や Rails でのルーティングと同様です。
もちろん、Erlang は oo の世界からの概念を持たない関数型言語です。しかし、http://[domain].[com]/controller/action/arg1/arg2/ を 'controller' という名前のモジュールへの GET リクエストとして 'action/2' 関数でルーティングすることもできます (または、既にそのようなライブラリ)。
Yaws には、これを行うためのいくつかの方法が用意されています。
appmod
ているようにパス「/」に登録しますが、質問が示唆するように、このアプローチでは URL の「.yaws」サフィックスを取り除くことはできません。.yaws
理解している場合にのみ使用してください。これら 3 つの選択肢のうち、rewrite モジュールがこの特定の問題に最適なモジュールだと思います。
そのようなモジュールがあるかどうかはわかりませんが、これを行うモジュールの利点はわかりません:
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).
いくつかのエラー処理などがあります。ところで、ハッキングされる良い方法です。