Spray框架学习
之前使⽤Scala Play! Framework作为前端框架开发项⽬,使⽤netty作为应⽤服务器,感觉⾮常轻便、好⽤,尤其是scala的语法简单、直观,虽然有些操作还要查看⽂档才能实现,但仍然不想在回归到Java上⾯,即使Java8有了lambda,还是感觉语法太笨重。
现在有个新的项⽬,是轻前端、重服务端的,开始就要考虑服务端接⼝要提供给移动应⽤客户端和web前端,再考察了⼏个框架后,决定采⽤Spray()作为服务器端实现,这样可以给不同的客户端提供接⼝。Web前端打算使⽤AngularJS,移动端⽬前要⽀持Android。
Spray官⽅⽂档中有⼀个Get Started的Demo,很简单直接的⼀个例⼦,有两个版本,⼀个是基于Jetty的Servlet版,另外⼀个是基于Spray项⽬的HTTP Server spray-can的例⼦,我先从这个例⼦开始。
1. 从下载该项⽬源码。
2. 由于我习惯使⽤IDEA作为Scala的IDE, 所以下载⼀个sbt-idea的sbt插件,⽤于⽣成idea项⽬。可以从,下载完成后按照该项⽬的安装
提⽰将plugin添加到sbt中,运⾏gen-idea⽣成idea⼯程
3. 按照Spray template的guide,安装运⾏该项⽬。当然,前提是安装sbt,然后运⾏sbt,它会⾃动下载相应的所有dependency。
4. 服务器启动后,直接访问8080端⼝,即可看到默认页⾯。
默认例⼦是使⽤html作为response,我添加了⼀段代码让其增加对指定路径响应JSON,在MyService的myRoute变量中加⼊⼀段:
val myRoute =
path("") {
get {
respondWithMediaType(`text/html`) { // XML is marshalled to `text/xml` by default, so we simply override here
complete {
<html>
<body>
<h1>Say hello to <i>spray-routing</i> on <i>spray-can</i>!</h1>
</body>
</html>
好用的前端框架}
}
}
}~
path("ping"){
get{
respondWithMediaType(`application/json`){
complete{
jsonPrefix + "{result: 'PONG'}"
}
}
}
}
1. Spray的调试不是hotswap的,必须要⼿动重启服务器,这点没有playframework⽅便。
2. 在设置JSON的response类型的时候,出现⼀个很尴尬的情况,可能是我眼神不好,把那个application/json外⾯的当成了单引号,
然后怎么都不对,⼀直报编译错误。后来仔细看了⼀下他原来的代码,原来外⾯的不是单引号,⽽是~这个不按shift时候的值,就是键盘左上⾓的那个键,汗~~
Spray作为⼀个简单的REST服务端框架,已经经过很多⾼并发项⽬的验证,性能和可靠性都没问题。
因为它是基于⾼并发架构akka的,所以这⽅⾯肯定是可靠的,后⾯有⼼得还会继续在这记录。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。