使用Swift4+Vapor写后端-初体验

简介
Vapor 是一个基于纯 Swift 构建出的 Web 开发框架,目前可以运行在 macOS 和 Ubuntu ,用于构建出漂亮易用的网站或者 API 服务。
Vapor的官网做的很漂亮,文档也比较完整,是一款比较主流、优雅、更新活跃的框架,非常适合初学者。
环境配置
- Xcode 9.3
- Swift 4.1
- Vapor Toolbox: 3.1.4
安装
安装官方文档安装步骤即可。
macOS下,首先要安装Xcode9
安装Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装Vapor。
brew install vapor
新建项目
创建一个名为“helloWorld”的项目。
vapor new helloWorld
vapor的文件结构类似于其他Web框架。
helloWorld
├── Config
│ ├── app.json
│ ├── crypto.json
│ ├── droplet.json
│ ├── fluent.json
│ └── server.json
├── Package.pins
├── Package.swift
├── Public
├── README.md
├── Sources
│ ├── App
│ │ ├── Config+Setup.swift
│ │ ├── Controllers
│ │ │ └── PostController.swift
│ │ ├── Droplet+Setup.swift
│ │ ├── Models
│ │ │ └── Post.swift
│ │ └── Routes
│ │ └── Routes.swift
│ └── Run
│ └── main.swift
├── Tests
│ ├── AppTests
│ │ ├── PostControllerTests.swift
│ │ ├── RouteTests.swift
│ │ └── Utilities.swift
│ └── LinuxMain.swift
├── circle.yml
└── license
项目主体目录层级
helloWorld
└── Sources
└── App
└── Routes.swift
编译之前需要拉取项目所有的依赖包,Vapor使用Swift Package Manager 来管理包,使用vapor fetch
命令进行拉取依赖,拉取到本地后后所有的包源码将会在 Packages 目录中,如下:
CLibreSSL-1.0.0 Fluent-1.1.0 Node-1.0.1 Turnstile-1.0.3
CMySQL-1.0.0 FluentMySQL-1.0.1 PathIndexable-1.0.0 Vapor-1.2.0
Console-1.0.1 JSON-1.0.1 Polymorphic-1.0.1 VaporMySQL-1.1.0
Core-1.0.0 Jay-1.0.0 Routing-1.0.1
Crypto-1.0.1 Leaf-1.0.3 Socks-1.2.0
Engine-1.3.0 MySQL-1.0.2 TLS-1.1.0
这类似于iOS中使用cocoapods
管理依赖包时的pod install
。
编译和运行
使用vapor build
或者vapor build --release
编译项目
使用vapor run serve
运行项目。
这时就可以通过在浏览器中输入localhost:8080/plaintext
或者运行curl localhost:8080/plaintext
来请求模板中的示例请求。
使用Xcode
cd进入项目目录下,我们可以使用 vapor xcode命令生成Xcode项目,然后就可以直接使用 Xcode进行web开发了,这对于iOS开发者是那么的熟悉。用Xcode打开项目,选择Run
scheme来运行。
vapor模板中Routes.swift
中已经有了几个示例,例如:
get("hello") { req in
var json = JSON()
try json.set("hello", "world")
return json
}
我们运行起来项目后,直接在浏览器里输入“0.0.0.0:8080/hello”这个get请求,就会返回响应的json数据。
{
hello: "world"
}
最后
vapor初步了解,感觉很不错的样子。现在我们已经了解了vapor的基本操作,下一步我们学习一下使用Heroku部署服务器。Heroku为个人用户提供了一个免费沙盒(512 MB RAM │ 1 web/1 worker),我们可以使用它免费去部署一个属于自己的服务器。访问速度是有点慢,毕竟国外免费。新开的坑,希望接下来能够慢慢填。