【问题标题】:Accessing Erlang business layer via REST通过 REST 访问 Erlang 业务层
【发布时间】:2010-09-30 06:36:12
【问题描述】:

对于一个大学项目,我正在考虑在 Erlang 中实现业务层,然后使用 REST 通过多个前端访问它。我想利用分布式应用程序等 OTP 功能。

我的问题是如何将 gen_server 调用/强制转换暴露给其他应用程序?显然,我可以通过特定于语言的“桥”(如 OTP.net 或 JInterface)进行 RPC 调用,但我想要一种一致的方式来访问它,如 REST。

【问题讨论】:

    标签: rest erlang erlang-otp


    【解决方案1】:

    正如已经提到的,Yaws 或 Mochiweb 是一个很好的方法,但是如果您想要一个简单的方法来快速正确地完成您的 RESTful API,那么请使用Webmachine。它是 Mochiweb 之上的一个层,它基于 Alan Dean 惊人的 HTTP flow diagram 实现正确的 HTTP 行为,并且可以轻松地正确完成 REST。

    我现在使用它来公开一个 REST API 以及处理一个 COMET 应用程序,这很容易做到,即使对于像我这样的 Erlang 新手也是如此。

    【讨论】:

      【解决方案2】:

      我为我的工作做了类似的事情,发现最好使用 REST 来公开业务层,因为即使是 SoftwareAG 的 Natural 等传统语言也能够访问它。我在 Erlang 中找到的最佳机制是使用 Mochiweb

      您可以从位于以下位置的截屏视频中找到有关使用它的更多信息 Erlang In Practice Screencast。第 6 集特别有用,但都非常出色。

      指导您完成安装的资源是 How To Quickly Set Up Ubuntu 8.04 loaded with Erlang, Mochiweb and Nginx,如果您没有找到自己喜欢的截屏视频,Migrating a native Erlang interface to RESTful Mochiweb (with a bit of TDD) 提供了一个良好的开端。

      【讨论】:

        【解决方案3】:

        HTTP 流程图链接已失效。 Alan Dean 和 Justin Sheehy 合作创建的原始版本和更新版本也托管在 Webmachine 项目中:link to latest version of the HTTP Diagramm

        【讨论】:

          【解决方案4】:

          如果可能的话,有一种有价值的方法来设计 gen_server 调用/转换以 REST 风格。您可以将消息用作

          {get, Resource}
          {set, Resource, Value} % aka PUT
          {delete, Resource}
          {add, Resource, Value} % aka POST (possible another names are append, modify or similar)
          

          那么它的映射很容易。您可以进行一些转换 URI->RESOURCE 或使用身份。对于您的大多数应用程序,这应该是麦芽汁方法,特殊情况您应该特别处理。您可以认为会有很大的余量,您不能使用这种方法,但这应该是过早的优化。

          【讨论】:

            【解决方案5】:

            您真的是指 RESTful 接口或 RPC over HTTP 吗?在现有层之上构建 RESTful 接口不仅仅是通过 HTTP 公开现有方法。

            我建议使用 mochiweb 或 yaws 来实现(通用)rpc 层。

            【讨论】:

              【解决方案6】:

              只是一个更新,Webmachine 已移至 bitbucket:new link to Webmachine

              【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-04-12
              • 2020-11-28
              • 2011-05-22
              • 1970-01-01
              • 2016-04-01
              • 2010-11-18
              • 2023-03-11
              • 2012-08-30
              相关资源
              最近更新 更多