基于akka-http搭建restfull框架
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/\nPress 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/\nPress 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/\nPress 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结合
基于akka-http搭建restfull框架的更多相关文章
- 基于maven从头搭建springMVC框架
0.准备工作 首先将eclipse和需要的插件准备好,例如maven插件,spring IDE插件. 1.建立maven下的webapp项目 1.新建一个maven项目,类型为webapp,如下图 2 ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- Java之基于Eclipse搭建SSH框架(下)
在上篇博客里,我简介了Tomcat滴配置与Struts2滴搭建,假设对这个还不会滴童鞋去看一下我滴上篇博客<Java之基于Eclipse搭建SSH框架(上)>.今天我们接着上篇博客滴内容. ...
- 搭建web框架手册(一)
昨天听完永康对EASYUI的介绍后终于明白了优秀的UI框架就是第一生产力,过去自己一直沉浸在后端代码中,完全忽视了前端的生产力交互,总觉得界面漂亮就是生产力,其实大错特错,真正的具有高效生产力的界面其 ...
- 脚手架快速搭建springMVC框架项目
apid-framework脚手架快速搭建springMVC框架项目 rapid-framework介绍: 一个类似ruby on rails的java web快速开发脚手架,本着不重复发明轮 ...
- 手工搭建ABP框架(1) - Web项目
为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7295533.html ABP是 ASP.NET Boilerplate Proj ...
- IDEA搭建SSMM框架(详细过程)
IDEA搭建SSMM框架(详细过程) 相关环境 Intellij IDEA Ultimate Tomcat JDK MySql 5.6(win32/win64) Maven (可使用Intellij ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
- 第n次搭建 SSM 框架
什么说第 N 次搭建SSM框架呢? 刚学习java的时候,搭建 SSM 框架想做一个个人项目之类的,后来没搭起来,也就拖延了,进入公司之后,接触的第一个项目就是SSM的,模仿了一下,也能搭个简简单单的 ...
随机推荐
- oracle表被锁(delete或update一直处于执行状态)的处理办法。
--首先查看有哪些锁 select /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',null) lock ...
- 对poi-excel导出的浅层理解
上一篇对excel导入做了浅层的解释,本文将对导出再做浅层解释. 仍然是相同的套路,只不过是反过来而已. 反过来方向理论上本来是这样的:cell-->row-->sheet-->wo ...
- 自定义python扩展类型
目标:自定义一个C\C++矩阵类,有几个用于演示的矩阵运算函数或者操作,将其通过 PyTypeOject newType的方式注册到python中成为一种新的类型,并且要可继承. 预备知识 建议先运行 ...
- cookie.js插件的案例
cookie.js插件的案例: https://github.com/jaywcjlove/cookie.js/blob/master/README.md 文档 api 在这里即可查看用法 ...
- windows shell命令相关
一 系统自带的命令 1 创建文件夹 mkdir 文件夹名 2 强制删除文件夹 rd/s/q 文件夹名 3 强制删除文件 del/f/s/q 文件名 4 移动文件到文件夹 move 文件名 文件夹名 二 ...
- js运算符逻辑!和instanceof的优先级
写js时间长了,运算符优先级很可能自然而然的就形成习惯了,也不需要特别注意优先级的问题. 至少到目前为止,我也没有真正了解过js当中所有运算符的具体优先级.也没有出过什么重大的问题. 但是直到今天,在 ...
- django之 基于queryset和双下划线的跨表查询
前面篇随笔写的是基于对象的跨表查询:对象.objects.filter(...) 对象.关联对象_set.all(...) -->反向 基于对象的跨表查询例如: book_obj= Book ...
- CUDA compiler driver nvcc 散点 part 1
▶ 参考[https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html] ▶ nvcc 预定义的宏 __NVCC__ // 编译 ...
- python大法好——装饰器、生成器、迭代器
1.装饰器 1. 不能修改被装饰的函数的源代码 2. 不能修改被装饰的函数的调用方式 实现装饰器知识储备: 1 函数即“变量” 2 高阶函数 a:把一个函数名当做实参传给另外一个函数(不修改 ...
- leetcode283
public class Solution { public void MoveZeroes(int[] nums) { ; ; i < nums.Length; i++) { //[0, 1, ...