跳转至

REST(Representational state transfer)表述性状态传递, 是一个和HTTP紧密关联的软件架构。遵循REST风格的API可以和数据库操作CRUD(创建、查询、更新、删除)联系起来。

REST风格的API可以用一种统一的模式来操作资源,这样可以简化客户端的构建过程。

例如我们要开发一套首字母缩写相关的遵循REST风格的API,可以这样定义:

创建

  • POST /api/acronuyms/1,创建一个ID为1的首字母缩写

查询

  • GET /api/acronyms/,获取全部的首字母缩写
  • GET /api/acronyms/1,获取ID为1的首字母缩写

更新

  • PUT /api/acronyms/1,用新的内容更新ID为1的首字母缩写

删除

  • DELETE /api/acronyms/1,删除ID为1的首字线缩写

使用Swift的好处

  • Swift是强静态类型语言,可以减少应用在运行期的崩溃
  • Swift是编译型语言,比解释型语言性能好
  • Swift对于iOS开发者来说,可以包揽前后端开发,不需要更换语言,并且Swift集众多语言的特点于一身
  • 使用Swift+Xcode开发对于服务端开发来说,有功能齐备的IDE和相关调试能力这种特性的服务端开发体验是非常棒的,大多数服务端开发语言都没有IDE支持

使用Vapor开发服务端的好处

  • Vapor使用了Codable协议,这能够减少许多数据在模型和数据库之间转换格式的相关代码
  • Vapor是完成非阻塞式的架构。阻塞式的架构中,在同一个线程中进行请求和返回请求需要的数据时,如果中间处理操作耗时较多,会出现返回延迟很多的情况。如果使用多线程的方式进行请求和返回,线程间的切换消耗又会较大。非阻塞的架构中,如果一个请求不能马上返回,会被放在一边,这个请求返回之前的这段时间还可以处理其它请求。关于阻塞非阻塞方式,这里说的也不是很清楚,细节还需要进一步研究。Vapor使用SwiftNIO实现了非阻塞架构包括数据库驱动。 Vapor的社区很活跃,流行度也挺高的。

TODO: 建立一个Vapor社区或问答系统用来记录问题和相关解决办法,进行技术积累。

示例工程

这个仓库是一个完整的示例工程,会在之后的章节中讲到其中的代码,可以作为学习的参考,是我实践Server Side Swift With Vapor这本书的产物,里面加了自己的一些注释和添加了一些数据库相关的脚本工具。