今回の目的
try! swiftのセッションで サーバーサイドSwift というのを知ったので、とりあえず、ローカルの環境で動かしてみる。
いろいろ調べると、Vaporというライブラリを使うと良さそうなので、Vaporを使って、サーバーサイドSwiftをやってみる。
環境
今回は、以下のような環境で行いました。
ソフト | バージョン |
---|---|
OS X | El Capitan 10.11.3(15D21) |
Swift | 3.0-dev (LLVM b361b0fc05, Clang 11493b0f62, Swift 24a0c3de75) |
Vapor | 0.2.9 |
セットアップ
適当なディレクトリに移動後、以下のコマンドを実行して、プロジェクトの設定を行います。
swift build --init
プロジェクトが作成されると、以下のファイルとディレクトリが作成されます。
- .gitignore
- Package.swift
- Sources/main.swift
- Tests
- 空のディレクトリ
まず、Package.swift
を開いて、Vaporをプロジェクトに追加します。
Package.swift
import PackageDescription
let package = Package(
name: "ServerSideIO",
dependencies: [
.Package(url: "https://github.com/qutheory/vapor.git", majorVersion: 0),
]
)
アプリの作成
Vaporを使用したアプリでは、まず、Application
のインスタンスを作成します。
main.swift
let app = Application()
ここで、作成したインスタンスに対し、アクセスしたいエンドポイントを定義していきます。
main.swift
app.get("/") { request in
return "Hello, world"
}
もちろん、JSONの取得ができるようにもできます。
main.swift
app.get("/json") { request in
return try Json([
"string": "hello, world"
])
}
サーバーを起動させるには、Application#start
を呼び出します。
main.swift
app.start()
ポートを指定して、サーバーを起動させることもできます。
main.swift
app.start(port: 8080)
上記まで、まとめると、以下のようなコードになります。
main.swift
import Foundation
import Vapor
let app = Application()
app.get("/") { request in
return "Hello, world"
}
app.get("/json") { request in
return try Json([
"string": "hello, world"
])
}
print("Starting: port 8080")
app.start(port: 8080)
まとめ
今回は、簡単なものを作ってみたので、Vaporのコードなど見ながら、もう少し、本格的なものを作ってみようかと思います。
今回のコードは、Githubの nhamada/ServerSideIOに上げてあります。