Rest API服务器的Scala框架?

时间:2010-09-09 17:00:59

标签: api rest scala lift

我们正在考虑将我们的Rest API服务器(它在Web服务中,在Symfony PHP上)移动到Scala有几个原因:速度,无开销,更少的CPU,更少的代码,可扩展性等等。我不知道Scala直到几天前,但我一直很享受这些天我用Scala书和所有博客文章和问题学习的东西(它不是那么难看!)

我有以下选择:

  • 从头开始构建Rest API服务器
  • 使用像Scalatra
  • 这样的小型Scala Web框架
  • 使用Lift

我将不得不使用的一些东西:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(缓存),日志,文件上传,统计(可能是Redis)。

你会推荐什么?

7 个答案:

答案 0 :(得分:86)

没有特别的顺序:

答案 1 :(得分:22)

我将推荐Unfiltered。这是一个习惯性的Web框架,它以“Scala方式”执行,并且非常漂亮。

答案 2 :(得分:15)

看看Xitrum(我是它的作者),它提供了你列出的所有内容。 Its doc非常广泛。来自README:

Xitrum是一个异步和集群的Scala Web框架和Web服务器,位于Netty和Hazelcast之上:

  • 注释用于URL路由,本着JAX-RS的精神。您不必在一个地方声明所有路线。
  • 异步,本着Netty的精神。
  • 会话可以存储在Cookie或群集Hazelcast中。
  • 进程内和群集缓存,您不需要单独的缓存服务器。
  • 进程内和集群Comet,您不需要单独的Comet服务器。

答案 3 :(得分:7)

我还会添加两个选项:akka,内置JAX-RS支持,直接使用JAX-RS(可能是Jersey实现)。虽然可以说比其他人更少“Scala-y”(依靠注释来绑定参数和路径),但JAX-RS使用起来很愉快,干净利落地解决了Web服务编码的所有问题。我没有通过akka使用它,我预计它会非常出色,通过它基于延续的实现获得令人印象深刻的可扩展性。

答案 4 :(得分:4)

查看Finch,一个用于构建Finagle HTTP服务的Scala组合器库。 Finch允许您从多个预定义的基本块中构造复杂的HTTP端点。与解析器组合器类似,Finch端点易于重用,组合,测试和推理。

答案 5 :(得分:3)

到目前为止所有的好答案。 Lift的一个优点是RestHelper,它可以很容易地编写简短,优雅的API方法。此外,您想要做的所有其他事情应该非常直接在Lift中实现。话虽如此,Memcache可能没有必要。

答案 6 :(得分:2)

现场有点晚了,但我肯定会建议使用Bowler框架来创建REST API。它小,到点和自动案例类转换支持!