2

Yaws でルーティングを行うにはどうすればよいですか? ASP.NET MVC や Rails でのルーティングと同様です。

もちろん、Erlang は oo の世界からの概念を持たない関数型言語です。しかし、http://[domain].[com]/controller/action/arg1/arg2/ を 'controller' という名前のモジュールへの GET リクエストとして 'action/2' 関数でルーティングすることもできます (または、既にそのようなライブラリ)。

4

2 に答える 2

4

Yaws には、これを行うためのいくつかの方法が用意されています。

  1. この回答に示されappmodているようにパス「/」に登録しますが、質問が示唆するように、このアプローチでは URL の「.yaws」サフィックスを取り除くことはできません。
  2. Yaws PDF ドキュメント のセクション 7.1.2 に示されているように、書き換えモジュールを使用します。これにより、クライアントは「.yaws」サフィックスなしで URL を使用できるようになります — リライト モジュールは必要に応じてそれらを追加できます。
  3. Yaws PDF ドキュメントの 52 ページに記載されているディスパッチ モジュールを使用します。ただし、このアプローチは、ページの処理を含む多くの便利な Yaws ディスパッチ機構をバイパスすることに注意してください。そのため、自分が何をしているのかを本当に.yaws理解している場合にのみ使用してください。

これら 3 つの選択肢のうち、rewrite モジュールがこの特定の問題に最適なモジュールだと思います。

于 2013-12-09T03:18:38.403 に答える
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).

いくつかのエラー処理などがあります。ところで、ハッキングされる良い方法です。

于 2013-12-08T17:51:31.357 に答える