是否有针对Erlang的Sinatra风格的Web框架?

我在Ruby和Rails中编程了很长时间,然后我爱上了Sinatra框架的简单性,这使我能够构建一个页面的Web应用程序。

是否有适用于Erlang的Sinatra等Web框架? 我试过Erlyweb,但它似乎太重量级了。

使用mochiweb可以实现最小化:

start() -> mochiweb_http:start([{'ip', "127.0.0.1"}, {port, 6500}, {'loop', fun ?MODULE:loop/1}]). % mochiweb will call loop function for each request loop(Req) -> RawPath = Req:get(raw_path), {Path, _, _} = mochiweb_util:urlsplit_path(RawPath), % get request path case Path of % respond based on path "/" -> respond(Req, <<"

Hello World!

">>); "/a" -> respond(Req, <<"

Page a

">>); ... _ -> respond(Req, <<"

Page not found!

">>) end. respond(Req, Content) -> Req:respond({200, [{<<"Content-Type">>, <<"text/html">>}], Content}).

如果您需要高级路由,则必须使用正则表达式而不是简单的case语句。

看看webmachine 。 它有一个非常简单但function强大的调度机制。 您只需编写资源模块,将URI指向它,并且您的服务自动符合HTTP标准。

你可能想看看Axiom (披露:这是我自己的项目)。 它很大程度上受到了Sinatra的启发,建立在牛仔之上,并提供了许多function,Sinatra。

一个简单的例子:

 -module(my_app). -export([start/0, handle/3]). start() -> axiom:start(?MODULE). handle('GET', [<<"hi">>], _Request) -> <<"Hello world!">>. 

这处理GET /hi并返回Hello World!

请查看README以获取其function的文档。

您可能对Rusty Klophaus的氮气框架感兴趣。 它非常轻巧,非常适合真正动态的单页网站。

可能是这个例子(参见REST SUPPORT)使用misultin,看起来像sinatra: