1.scala开发环境介绍
2.scala插件的demo模板介绍
3.akka-http提供demo研究
4.添加路由机制解析
package org.netsharp.rest
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{ContentTypes, HttpEntity}
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import scala.io.StdIn
object WebServer {
def main(args:Array[String]):Unit={
implicit val system = ActorSystem("netsharp")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val userRoute = path("user"){
get{
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say user to akka-http</h1>"))
}
}
val orderRoute = path("order"){
get{
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say order to akka-http</h1>"))
}
}
val customerRoute = path("customer"){
get{
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say customer to akka-http</h1>"))
}
}
val routes =
pathPrefix("v1") {
userRoute ~ orderRoute ~ customerRoute
} ~ path("")(getFromResource("public/index.html"))
val bindingFuture = Http().bindAndHandle(routes,"localhost",80)
println(s"Server online at http://localhost:80/
Press RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind())
.onComplete(_=>system.terminate())
}
}
4.通过变量解析路径
package org.netsharp.rest
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{ContentTypes, HttpEntity}
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import scala.io.StdIn
object WebServer {
def main(args:Array[String]):Unit={
implicit val system = ActorSystem("netsharp")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val xroute=path(Segment/Segment/Segment){(v,domain,operation)=>
get{
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, s"version:$v;domain:$domain;operation:$operation"))
}
}
val bindingFuture = Http().bindAndHandle(xroute,"localhost",80)
println(s"Server online at http://localhost:80/
Press RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind())
.onComplete(_=>system.terminate())
}
}
a.sbt启动项目:run
b.浏览器中输入地址:http://localhost/v1/user/create
c.显示为:version:v1;domain:user;operation:create
5.路由机制的多级变量
package org.netsharp.rest
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{ContentTypes, HttpEntity}
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import scala.io.StdIn
object WebServer {
def main(args:Array[String]):Unit={
implicit val system = ActorSystem("netsharp")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val xroute=path(Segments){xs=>
get{
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, xs.toString()))
}
}
val bindingFuture = Http().bindAndHandle(xroute,"localhost",80)
println(s"Server online at http://localhost:80/
Press RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind())
.onComplete(_=>system.terminate())
}
}
a.sbt启动项目:run
b.浏览器中输入地址:http://localhost/v1/user/create
c.显示为:List(v1, user, create)
6.akka-http与actor结合