因为业务需求,需要对Akka HTTP进行快速学习
什么是Akka HTTP?
Akka HTTP 模块组在 akka-actor 和 akka-stream 的基础上实现了全HTTP栈( 服务器- 及客户- 端 )的功能
应用范围?
不需要前端页面,只需要通过REST/HTTP 提供接口连接的服务。
HTTP服务端的路由DSL?
路由DSL来描述HTTP"路由”和其相关处理
每个路由可以是一个或几个不同的Directive层级组合而成,每个路由则专注处理一个类型的请求。
通过 路由DSL 生成的 Route 对象 必须进行对应的“绑定”才能开始处理不同
HTTP Routes 是什么?
Route 是Routing DSL的核心概念。
type Route = RequestContext => Future[routeResult]
requestContext.complete(...)
by calling complete a given response is sent to the client as reaction to the request. I
返回对响应的请求
The Routing Tree
val route =
a {
b {
c {
... // route 1
} ~
d {
... // route 2
} ~
... // route 3
} ~
e {
... // route 4
}
}
不同层级下route调用情况如下
Route 1 will only be reached if directives a, b and c all let the request pass through.
Route 2 will run if a and b pass, c rejects and d passes.
Route 3 will run if a and b pass, but c and d reject.