基于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的,模仿了一下,也能搭个简简单单的 ...
随机推荐
- 第25课 可变参数模板(6)_function_traits和ScopeGuard的实现
1. function_traits (1)function_traits的作用:获取函数的实际类型.返回值类型.参数个数和具体类型等.它能获取所有函数语义类型信息.可以获取普通函数.函数指针.std ...
- (转)EF5+SQLserver2012迁移到EF6+mysql5.5.47
原文地址:https://www.cnblogs.com/tinyjian/p/6235014.html:https://www.cnblogs.com/tinyjian/p/6235397.html ...
- Node学习笔记(三)
1.EventEmitter常用的API EventEmitter.on(event, listener) 为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数 listener. E ...
- xmanagr 注册机执行ubuntu 桌面程序,ubuntu无需安装 桌面环境
Xshell 5 注册码: 690313-111999-999313Xftp 5 注册码:101210-450789-147200 Xmanager 5 注册码:101210-450789-14720 ...
- leetcode22
public class Solution { public IList<string> GenerateParenthesis(int n) { List<string> l ...
- ElasicSearch(1)
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- postgresql数据库varchar、char、text的比较
名字 描述character varying(n), varchar(n) 变长,有长度限制character(n), char(n) 定长,不足补空白text 变长,无长度限制简单来说,varcha ...
- join() ---- 使用四种不同的分隔符连接数组元素
var a = ['Wind', 'Rain', 'Fire']; var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire" var ...
- JAVA程序调试
调试 步骤1:设置断点(不能在空白处设置断点) 步骤2:启动调试 步骤3:调试代码(F6单步跳过)笔记本Fn+F6(F5) 步骤4:结束调试 掌握调试的好处? l 很清晰的看到,代码执行的顺序 l ...
- Django 重写用户模型
AUTH_USER_MODEL = 'myapp.MyUser' django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身 ...