Quick Start
Installing Swift
好像最新的OSX系统是自带Swift的,不过笔者本机的版本是2.1.1,而Vapor的要求是2.2以上版本,因此还是要来Swift.org官网来更新一波的。 首先需要在这嘎达下载下安装文件,然后进行配置。
OSX
默认的OSX系统上的Swift安装的地址为:/Library/Developer/Toolchains
。 可以使用如下配置来使得可执行文件能够全局通用
$ export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:"${PATH}"
Linux
首先需要安装下clang
$ sudo apt-get install clang
如果没有把Swift的工具链安装在系统根目录下,可以使用如下方式来讲Swift可执行命令设置为全局可用:
$ export PATH=/path/to/Swift/usr/bin:"${PATH}"
可以使用--version
参数来检查安装的Swift版本是否正确:
$ swift --version
Apple Swift version 2.2-dev (LLVM ..., Clang ..., Swift ...)
HelloWorld
最简单的基于Vapor的架构就是如下
`
-
Sources/
main.swift
Pakcage.swift
`
其中Package.swift的内容如下:
import PackageDescription
let package = Package(
name: "VaporApp",
dependencies: [
.Package(url: "https://github.com/qutheory/vapor.git", majorVersion: 0),
.Package(url: "https://github.com/qutheory/vapor-stencil.git", majorVersion: 0)
]
)
而main.swift的内容为:
import Vapor
let server = Server()
server.run()
使用swift build
进行编译,然后运行.build/debug/VaporApp
即可得到如下输出结果:
Server has started on port 80
Clone
sudo apt-get install git
git clone git@github.com:qutheory/vapor-example.git
Compile
cd vapor-example
swift build --configuration release
Automatic Startup
如果需要整改网站自启动,则需要将如下配置放置到init目录下,/etc/init/vapor-example.conf
description "Vapor Example"
start on startup
exec /home/<USERNAME>/vapor-example/.build/release/VaporApp --port=80 --workDir=/home/<USERNAME>/vapor-example
这样已经可以执行自启动了:
sudo start vapor-example
API Overview
Server
如果需要创建一个服务器:
main.swift
import Vapor
let server = Server()
server.run()
也可以自定义需要启动的端口
server.run(port: 8080)
如果有时候端口不能监听,请确定你的端口是处于开启状态,可以使用apt-get ufw
来进行简单的端口管理。
Routing
Vapor中的路由返回跟Lavarel中非常类似:
main.swift
Route.get("welcome") { request in
return "Hello"
}
//...start server
这样所有关于 http://example.com/welcome
的请求都会返回响应: "Hello"
。
JSON
返回JSON数据
Route.get("version") { request in
return ["version": "1.0"]
}
所有对于 http://example.com/version
请求的返回都是简单的字典类: {"version": "1.0"}
以及 Content-Type: application/json
.
Views
也可以返回HTML界面
Route.get("/") { request in
return View(path: "index.html")
}
或者使用Stencil Stencil 模板。index.stencil
<html>
<h1>{{ message }}</h1>
</html>
Route.get("/") { request in
return View(path: "index.stencil", context: ["message": "Hello"])
}
如果添加了 VaporStencil
依赖, 只需要将视图文件放置到Resources
目录下即可。
Stencil
如果需要添加 VaporStencil
, 将如下依赖添加到 Package.swift
.
Package.swift
.Package(url: "https://github.com/qutheory/vapor-stencil.git", majorVersion: 0)
Then set the StencilRenderer()
on your View.renderers
for whatever file extensions you would like to be rendered as Stencil
templates.
main.swift
import VaporStencil
//set the stencil renderer
//for all .stencil files
View.renderers[".stencil"] = StencilRenderer()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。