是否有一个很好的OCaml库用于在python中创建像金字塔这样的Web服务?

时间:2015-05-10 20:12:34

标签: ocaml

问题标题说明了一切。

我发现python中的pyramid非常容易使用。

在OCaml中,我知道Eliom,但猜它太重了。而且在客户端,我将使用angular js而不需要在OCaml中编写浏览器页面。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

Eliom不一定要“沉重”;但是我认为他们的博士在那里有轻微的公关问题......

这是一个最小的Eliom页面,当您访问路径/aaa/bbb(来自https://ocsigen.org/tuto/manual/basicwebsite)时,它只会从字符串中提供一些HTML:

let f _ () =
  Lwt.return "<html><head><title>A</title></head><body>B</body></html>"

let main_service =
  Eliom_registration.Html_text.register_service
    ~path:["aaa"; "bbb"]
    ~get_params:Eliom_parameter.any
    f

您还需要服务器的基本配置:

<ocsigen>
  <server>
    <port>8080</port>

    <charset>utf-8</charset>

    <extension findlib-package="ocsigenserver.ext.staticmod"/>
    <extension findlib-package="ocsigenserver.ext.ocsipersist-dbm"/>
    <extension findlib-package="eliom.server"/>

    <host hostfilter="*">
      <static dir="static" />
      <eliommodule module="_build/foo.cmo" />
      <eliom/>
    </host>
  </server>
</ocsigen>

编译,运行服务器并尝试页面:

ocamlbuild -pkg eliom.server foo.cmo
ocsigenserver -v -c foo.conf

等待它说ocsigenserver: main: Ocsigen has been launched (initialisations ok),然后打开http://localhost:8080/aaa/bbb

使用这种方式,它对我来说感觉不是很重,你可以轻松使用你需要的最小部件。也就是说,如果不了解实际需要的内容,很难说Eliom是否是最佳选择: - )

答案 1 :(得分:0)

OWebl是一个我认为非常有前景的新项目,看起来它可以很好地满足您的需求。其他选项是直接使用cohttp或使用opium