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。 它小,点和自动案例类转换的支持!