Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (86 sloc) 3.45 KB

Kitura を使ったサンプル

Kitura Web Framework を使った簡単なサンプル。 JSONを返すだけなのでViewはありませんが、ModelとControllerを分けて作っています。

利用ライブラリ

以下のライブラリを使っています。

import PackageDescription

let package = Package(
    name: "KituraSample",
    dependencies: [
            .Package(url: "https://github.com/IBM-Swift/Kitura-router.git", majorVersion: 0),
            .Package(url: "https://github.com/d-abe/LithiumLogger.git", majorVersion: 0),
            .Package(url: "https://github.com/d-abe/fluent.git", majorVersion: 0),
            .Package(url: "https://github.com/d-abe/fluent-postgresql.git", majorVersion: 0),
    ]
)

動作環境

試し方

Macの場合

  1. まず、SwiftのLatest Development Snapshotsからダウンロード&インストールしておきます。
  2. Swiftのインストール先をPATHに追加します(例:PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH)
  3. Homebrewで依存ライブラリをインストールします。

brew install http-parser pcre2 curl hiredis

  1. Githubのリポジトリからcloneします。

git clone https://github.com/d-abe/kitura_sample

  1. ビルドします。

make

  1. 実行します。

.build/debug/KituraSample

Dockerの場合

  1. Docker, Docker Compose (必要ならDocker Machineも)をインストール&設定しておきます(ここでは詳細は触れません)。

  2. docker-compose.yamlを作成します。

# postgres
postgresql:
  image: postgres:9.5
  ports:
    - "5432:5432"
  environment:
    POSTGRES_USER: docker
    POSTGRES_PASSWORD: docker
    POSTGRES_DB: docker

# kitura
kitura:
  image: dabe/kitura-ubuntu:latest
  volumes:
    - "{$ROOT_DIR}/src:/src"
  links:
    - postgresql:db
  ports:
    - "8090:8090"
  working_dir: /src
  environment:
    PROJECT_NAME: kitura
    WORKING_DIR: /src

※パスなどは自分の環境に合わせます

  1. Docker Composeでコンテナを立ち上げます。
$ docker-compose up -d
  1. PostgreSQLにテーブル作成SQLを投入(お好きなクライアントでDatabase/sample.sqlを流す)

※もしくは、docker execでコンテナに対して /bin/bash を実行し、psqlを実行してもいいです

  1. これで動いているはず、なので動作確認。
$ curl -H "Content-Type: application/json" -d "{\"comment\": \"test\"}" http://192.168.171.150:8090
{
  "created_at": "2016-03-01 03:33:00"
  "comment": "test"
}
$ curl http://192.168.171.150:8090
[
  {
    "comment": "test",
    "created_at": "2016-03-01 03:33:00"
  }
]