Rest API服务器的Scala框架?

我们正在考虑将Rest API服务器(它位于Web服务中,在Symfony PHP中)移到Scala,原因有几个:速度,没有开销,CPUless,代码less,可伸缩性等等。但是我一直在享受我最近在Scala书以及所有博客文章和问题中学到的东西(这不是太难看!)

我有以下select:

  • 从头开始构buildRest API服务器
  • 使用像Scalatra这样的小型Scala Web框架
  • 使用电梯

有些东西,我将不得不使用:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(caching),日志,file upload,统计(也许Redis)。

你会推荐什么?

没有特别的顺序:

  • Akka HTTP
  • 喷雾
  • Paypal squbs (阿卡/喷雾)
  • DropWizard
  • REST.li
  • http4s
  • 蓝眼睛
  • Finagle – 容错,协议不可知的RPC系统
  • 玩! 和播放迷你! ( 文章 )( 教程 )
  • 提升 /解除JSON.-使提供REST服务变得简单。

我要推荐Unfiltered 。 这是一个惯用的Web框架,它可以完成“Scala方式”,非常漂亮。

看看Xitrum (我是它的作者),它提供了你列出的所有东西。 它的文档相当广泛。 从自述文件:

Xitrum是Netty和Hazelcast之上的asynchronous和集群Scala Web框架和Web服务器:

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

我会再添加两个选项:带有内置JAX-RS支持的akka​​,以及直接使用JAX-RS(可能是Jersey实现)。 虽然可以说比其他人less(“依赖于注释来绑定参数和path”)的“Scala-y”,但是JAX-RS是一种使用起来很快乐,干净利落地解决了所有Web服务编码问题。 我没有通过AKK使用它,我预计它会很好,通过它的延续实现获得令人印象深刻的可扩展性。

看看Finch ,一个用于构buildFinagle HTTP服务的Scala组合库。 Finch允许您从预定义的基本块数量中构build复杂的HTTP端点。 类似于parsing器组合器,Finch端点很容易重用,编写,testing和推理。

迄今为止所有的好答案。 Lift的一个优点就是它的RestHelper ,它可以很容易地写出简短,优雅的API方法。 另外,你想做的所有其他事情应该是在Lift中非常直接的实现。 这就是说,Memcache可能没有必要。

有点晚,但我肯定会推荐使用Bowler框架来创buildREST API。 它小,点和自动案例类转换的支持!