Swift

Vaporを使って、サーバーサイドSwiftやってみた

More than 3 years have passed since last update.


今回の目的

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に上げてあります。