基于Scala的REST框架Spray

来源:互联网 发布:淘宝修改宝贝详情影响 编辑:程序博客网 时间:2024/05/01 09:17

Spray是一系列轻量级Scala库,提供基于Akka框架的客户端/服务端REST/HTTP功能。Spray提供了REST/HTTP所需的一系列可集成的组件,并且以纯ScalaAPI的方式实现,没有使用任何遗留的Java库。

Spray的设计理念:

  • 完全异步、无阻塞
    所有API都是完全异步的,所有实现都避免阻塞的代码。
  • 基于Actor和Future
    完全基于Akka平台编程模型的实现,基于Akka的核心概念Actor和Future构建。
  • 高性能
    为高负载环境下实现卓越性能而精心设计实现的低级组件。
  • 轻量级
    精心管理的依赖,尽量小的依赖关系。
  • 模块化
    由松耦合的集成组件构成,应用可只依赖需要的部分组件。
  • 可测试
    spray组件以结构化的方式组成,便于进行测试。

模块

这里写图片描述

  • spray-caching:基于谷歌concurrentlinkedhashmap和Akka Future的快速、轻量级内存缓存。
  • spray-can: 基于spray-io上的低级、低成本、高性能的HTTP服务器和客户端。
  • spray-client: 基于spray-can的更高级别的客户端HTTP客户端API支持。
  • spray-http: 不可变的HTTP请求、响应、常用头模型。该模块完全独立,不依赖任何Akka和其他spray组件。
  • spray-httpx: 用于HTTP消息(信息编码、解码、压缩等)高级别的工具集,被spray-client、spray-route引用。
  • spray-io: 用于直接将Akka Actors连接到异步Java NIO套接字的低级别网络IO层。可以看做是Scala版的Netty。
  • spray-servlet: 提供基于Servlet API之上的spray-canHTTP服务器接口的适配器层。在servlet容器中使用spray-routing。
  • spray-routing: 定义RESTful服务的高级别路由的DSL。
  • spray-testkit: 便于测试spray-routing服务的DSL,支持ScalaTest和Specs2。
  • spray-util: 除了spray-http以外的公用工具类。
  • spray-json: 轻量级、简洁的JSON实现。它不依赖任何spray和Akka组件,并在spray-client和spray-httpx中作为可选依赖,它不在spray的代码仓库中。它只是spray提供的一种可选择JSON库。

我们需要的HTTP方式

  • 基于case class的模型
  • 基于actor的API(消息协议)
  • 一等函数
  • Scala/Akka Future
  • Scala集合
  • 类型类
  • 类型安全
0 0